为了账号安全,请及时绑定邮箱和手机立即绑定

2个Postgres实例的结果不同

2个Postgres实例的结果不同

Go
蓝山帝景 2021-04-27 16:20:30
我使用带有的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
查看完整描述

2 回答

?
临摹微笑

TA贡献1982条经验 获得超2个赞

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

SET bytea_output = 'hex';

在运行查询之前


查看完整回答
反对 回复 2021-05-31
?
扬帆大鱼

TA贡献1799条经验 获得超9个赞

尝试使用PREPAREEXECUTEpq使用“扩展”查询协议,该协议使用绑定而不是仅是文本的“简单”协议,因此可以更好地对交互进行建模。



查看完整回答
反对 回复 2021-05-31
  • 2 回答
  • 0 关注
  • 371 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信