问题:2 个 Postgres 实例的不同结果

我使用Postgres App和ssmode=disable在本地运行 Postgres 9.2.2 服务器。所有表都按应有的方式创建,并且SELECT查询按预期工作。

当我在Heroku上创建 Postgres 实例(根据psql,ssmode=require,服务器是 9.1.6)时,一切正常,除了查询没有返回任何结果,而本地 postgres 实例确实如此。

具体查询是

SELECT * FROM "captcha" WHERE "cid" = $1 LIMIT $2

cid/$1character varying(20)类型。

通过psql连接到远程实例并手动执行查询时,按预期返回了行。我只是不明白是什么可能导致这种不同的行为。

主要嫌疑人是我使用bmizerany/pq的驱动程序,但是这种行为是否还有其他错误来源?

更新:

我用普通查询尝试过,结果相同:结果集中没有行

SELECT * FROM "captcha" WHERE "cid" = 'JQRPm6qRpYukXCiPUpHZ' LIMIT 1

更新 2:

它与bytea字段有关,以下片段说明了在这 2 个 PG 版本上执行时的问题https://gist.github.com/eaigner/5004468

解答

问题是,Heroku 使用非默认bytea_output。所以解决这个问题的方法是

SET bytea_output = 'hex';

在运行查询之前

Logo

PostgreSQL社区为您提供最前沿的新闻资讯和知识内容

更多推荐