2014-09-19 64 views
0

說明:我在使用綁定參數多次執行準備好的語句時遇到問題。第一次它執行正確,然後重置參數,語句,當我嘗試執行相同的準備好的語句下一次失敗給出這樣的錯誤。PostgreSQL:在postgresql中重複使用準備好的語句時出錯

詳細信息:我正在執行準備好的語句,並綁定一些參數,執行後我休息準備好的語句並解除綁定參數。當嘗試執行相同的準備好的語句時,它會給出錯誤:「27:獲取數字屬性出錯:此類型的ColAttribute尚未實現」。我正在使用libodbC++庫。當調試它在這條線會錯誤(libodbC++代碼線)

行:結果集* RS = ODBCXX_OPERATOR_NEW_DEBUG(FILELINE)結果集(在此,hstmt_,hideMe);

錯誤: 「27:錯誤獲取數字屬性:ColAttribute這種類型尚未實現

你正在運行的PostgreSQL的版本號:

你如何安裝PostgreSQL的:在PostgreSQL 9.3.5,編譯由Visual C++建立在文件postgresql.conf對設置進行1600,64位

的變化:無

操作系統和版本:視窗8.1( 64位)

您正在使用連接到PostgreSQL什麼程序:ODBC 3.5(libodbC++)庫

是否有相關或不尋常的PostgreSQL服務器日誌什麼嗎?不

有關問題任何類型的錯誤:

什麼時候發生錯誤,你在做/如何導致錯誤:「27:錯誤獲取數字屬性:ColAttribute這種類型尚未實現」

感謝&關於 Balakrishna

+0

您能否向我們提供準備好的聲明? – Compass 2014-09-19 06:33:29

+0

有人說這是由於SQLColAttribute函數是用驅動程序無法識別的字段標識符調用的。 是真的嗎?如果它是postgresql驅動程序支持的字段標識符是什麼? – balakrishna 2014-10-16 05:05:00

回答

0

問題出在libodbC++如何處理參數和查詢。有兩種方法來解決這個問題:

1. Upgrade the libodbc++ to use 7.4(V3) protocol. 
2. If you are using old libodbc++, then change disable the UseServerSidePrepare parameter in odbc configuration files. 

爲UseServerSidePrepare = 0在ODBC配置:

The psqlodbc controls more than just whether to use unnamed or named plans in the server. With UseServerSidePrepare=0, parameters are handled completely in the driver, replacing the parameter markers with the values in the query itself.

注意:有可能是應用中UseServerSidePrepare = 1 給出了一個性能命中,特別是在針對< 9.2服務器運行時。 它仍然是一個更好的默認恕我直言,你仍然可以關閉,如果你必須。

PS:我知道這個問題是在幾年前問過的,但是我最近面臨同樣的問題,並且實際上只有很少的資源。