3

我使用带有. ssmode=disable所有表都按应有的方式创建,SELECT查询按预期工作。

当我在Heroku上创建 Postgres 实例时(根据 , ,服务器是 9.1.6 psqlssmode=require,一切正常,除了查询不返回任何结果,而本地 postgres 实例则返回。

具体查询是

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

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

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

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

更新:

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

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

更新 2:

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

4

2 回答 2

2

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

SET bytea_output = 'hex';

在运行查询之前

于 2013-02-21T13:00:08.847 回答
1

尝试使用PREPARE/ EXECUTEpq使用使用绑定的“扩展”查询协议,而不是只是文本的“简单”协议,这样可以更好地模拟交互。

请提交一个错误。

于 2013-02-21T03:03:06.623 回答