2个Postgres实例的结果不同

时间:2013-02-21 00:49:18

标签: postgresql heroku go

我使用带有ssmode=disable的{​​{3}}在本地运行Postgres 9.2.2服务器。所有表都按照应有的方式创建,SELECT查询按预期工作。

当我在Postgres App上创建Postgres实例时(服务器是根据psqlssmode=require的9.1.6),一切正常,但查询没有返回结果,其中本地postgres实例。

具体查询是

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

cid / $1的类型为character varying(20)

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

主要嫌疑人将是我使用Heroku的驱动程序,但此行为可能还有其他错误来源吗?

更新:

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

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

更新2:

它与bytea字段有关联,以下代码段说明了在这两个PG版本bmizerany/pq上执行时的问题

2 个答案:

答案 0 :(得分:2)

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

SET bytea_output = 'hex';

在运行查询之前

答案 1 :(得分:1)

尝试使用PREPARE / EXECUTEpq使用“扩展”查询协议,该协议使用bind而不是仅仅是文本的“简单”协议,以便更好地模拟交互。

请提交错误。