我使用帶有的Postgres App在本地運(yùn)行Postgres 9.2.2服務(wù)器ssmode=disable。所有表的創(chuàng)建均與SELECT預(yù)期的一樣,查詢按預(yù)期方式工作。當(dāng)我在Heroku上創(chuàng)建Postgres實(shí)例(根據(jù)psql,服務(wù)器為9.1.6 ssmode=require)時(shí),一切正常,除了查詢不返回任何結(jié)果(本地postgres實(shí)例執(zhí)行此操作)之外。具體查詢是SELECT * FROM "captcha" WHERE "cid" = $1 LIMIT $2和cid/$1是類型的character varying(20)。當(dāng)通過psql并手動執(zhí)行查詢連接到遠(yuǎn)程實(shí)例時(shí),將按預(yù)期返回行。我只是不明白是什么原因可能導(dǎo)致這種不同的行為。主要懷疑對象是我使用bmizerany / pq的驅(qū)動程序,但是這種行為是否還有其他錯(cuò)誤來源?更新:我用簡單的查詢嘗試了一下,結(jié)果相同:結(jié)果集中沒有行SELECT * FROM "captcha" WHERE "cid" = 'JQRPm6qRpYukXCiPUpHZ' LIMIT 1更新2:它與該bytea字段有關(guān),以下代碼段說明了在這2個(gè)PG版本上執(zhí)行時(shí)的問題https://gist.github.com/eaigner/5004468
2 回答

臨摹微笑
TA貢獻(xiàn)1982條經(jīng)驗(yàn) 獲得超2個(gè)贊
問題是,Heroku使用非默認(rèn)值bytea_output
。因此,解決此問題的方法是
SET bytea_output = 'hex';
在運(yùn)行查詢之前

揚(yáng)帆大魚
TA貢獻(xiàn)1799條經(jīng)驗(yàn) 獲得超9個(gè)贊
嘗試使用PREPARE
/ EXECUTE
。pq
使用“擴(kuò)展”查詢協(xié)議,該協(xié)議使用綁定而不是僅是文本的“簡單”協(xié)議,因此可以更好地對交互進(jìn)行建模。
- 2 回答
- 0 關(guān)注
- 422 瀏覽
添加回答
舉報(bào)
0/150
提交
取消