2个Postgres实例的结果不同

我使用带有的Postgres App在本地运行Postgres 9.2.2服务器ssmode=disable。所有表的创建均与SELECT预期的一样,查询按预期方式工作。

当我在Heroku上创建Postgres实例(根据psql,服务器为9.1.6 ssmode=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


蓝山帝景
浏览 372回答 2
2回答

临摹微笑

问题是,Heroku使用非默认值bytea_output。因此,解决此问题的方法是SET bytea_output = 'hex';在运行查询之前

扬帆大鱼

尝试使用PREPARE/ EXECUTE。pq使用“扩展”查询协议,该协议使用绑定而不是仅是文本的“简单”协议,因此可以更好地对交互进行建模。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go