2 个 Postgres 实例的不同结果
问题:2 个 Postgres 实例的不同结果 我使用Postgres App和ssmode=disable在本地运行 Postgres 9.2.2 服务器。所有表都按应有的方式创建,并且SELECT查询按预期工作。 当我在Heroku上创建 Postgres 实例(根据psql,ssmode=require,服务器是 9.1.6)时,一切正常,除了查询没有返回任何结果,而本地 postgres
·
问题:2 个 Postgres 实例的不同结果
我使用Postgres App和ssmode=disable
在本地运行 Postgres 9.2.2 服务器。所有表都按应有的方式创建,并且SELECT
查询按预期工作。
当我在Heroku上创建 Postgres 实例(根据psql
,ssmode=require
,服务器是 9.1.6)时,一切正常,除了查询没有返回任何结果,而本地 postgres 实例确实如此。
具体查询是
SELECT * FROM "captcha" WHERE "cid" = $1 LIMIT $2
cid
/是
character varying(20)
类型。
通过psql
连接到远程实例并手动执行查询时,按预期返回了行。我只是不明白是什么可能导致这种不同的行为。
主要嫌疑人是我使用bmizerany/pq的驱动程序,但是这种行为是否还有其他错误来源?
更新:
我用普通查询尝试过,结果相同:结果集中没有行
SELECT * FROM "captcha" WHERE "cid" = 'JQRPm6qRpYukXCiPUpHZ' LIMIT 1
更新 2:
它与bytea
字段有关,以下片段说明了在这 2 个 PG 版本上执行时的问题https://gist.github.com/eaigner/5004468
解答
问题是,Heroku 使用非默认bytea_output
。所以解决这个问题的方法是
SET bytea_output = 'hex';
在运行查询之前
更多推荐
目录
所有评论(0)