【问题标题】:Different results with 2 Postgres instances2 个 Postgres 实例的不同结果
【发布时间】:2013-02-06 05:11:09
【问题描述】:

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

当我在Heroku 上创建一个 Postgres 实例(根据psqlssmode=require,服务器是 9.1.6)时,一切正常,除了查询没有返回任何结果,而本地 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字段有关,下面的sn-p说明了在这两个PG版本https://gist.github.com/eaigner/5004468上执行时的问题

【问题讨论】:

  • 您能打印出正在执行的确切查询吗?
  • “确切查询”是什么意思?我已经发布了准备好的声明。
  • 这可能是一个愚蠢的问题,但如果您只执行SELECT * FROM "captcha",您会在该结果集中看到正确的行吗?
  • 是的,当我使用 psql 进行查询时,这是正确的行
  • 不,即使我选择所有行也不会返回任何行。

标签: postgresql heroku go


【解决方案1】:

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

SET bytea_output = 'hex';

在运行查询之前

【讨论】:

    【解决方案2】:

    尝试使用PREPARE/EXECUTEpq 使用使用绑定的“扩展”查询协议,而不是只是文本的“简单”协议,这样可以更好地模拟交互。

    请提交错误。

    【讨论】:

    • 哦,你是维护者之一!我已经为它提交了issue
    猜你喜欢
    • 2020-11-21
    • 1970-01-01
    • 2018-11-18
    • 1970-01-01
    • 2021-11-09
    • 2018-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多