3

Postgres アプリを使用して、Postgres 9.2.2 サーバーをローカルで実行していますssmode=disable。すべてのテーブルは本来あるべきように作成され、SELECTクエリは期待どおりに機能します。

Herokuで Postgres インスタンスを作成すると(サーバーは によると 9.1.6 ですpsql) 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

4

2 に答える 2

2

問題は、Heroku がデフォルトではない を使用していることですbytea_output。したがって、これに対処するための回避策は

SET bytea_output = 'hex';

クエリを実行する前に

于 2013-02-21T13:00:08.847 に答える
1

PREPARE/を使ってみてくださいEXECUTEpqテキストだけの「単純な」プロトコルではなく、バインドを使用する「拡張された」クエリプロトコルを使用するため、相互作用がより適切にモデル化されます。

バグを報告してください。

于 2013-02-21T03:03:06.623 に答える