我使用带有ssmode=disable
的{{3}}在本地运行Postgres 9.2.2服务器。所有表都按照应有的方式创建,SELECT
查询按预期工作。
当我在Postgres App上创建Postgres实例时(服务器是根据psql
,ssmode=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上执行时的问题
答案 0 :(得分:2)
问题是,Heroku使用非默认bytea_output
。因此解决这个问题的解决方法是
SET bytea_output = 'hex';
在运行查询之前
答案 1 :(得分:1)
尝试使用PREPARE
/ EXECUTE
。 pq
使用“扩展”查询协议,该协议使用bind而不是仅仅是文本的“简单”协议,以便更好地模拟交互。
请提交错误。