我試圖設置unixODBC連接到Netezza數據庫,但是當我嘗試使用isql進行連接時,出現「Undefined symbol:SSL_connect」。unixodbc和netezza ODBC驅動程序問題(未定義符號:SSL_connect)
當前使用:CentOS 5.5,unixODBC 2.3.0(與2.2.11相同)。
我也做了以下內容:
- 根據與ODBC驅動程序附帶的readme.txt配置LD_LIBRARY_PATH,ODBCINI和NZ_INI_FILE_PATH。
- 確保使用ldd命令加載所有庫併爲libssl和libcrypto設置符號鏈接。
- 更新了/etc/ld.so.conf文件以確保netezza驅動程序路徑已加載。
- 使用nm來確認SSL_connect符號在驅動程序中。
運行dltest對這個符號的文件報告了「找不到文件」的錯誤,這是我通常會得到,當我嘗試運行ISQL -v,但我改變了LD_DEBUG環境變量,以獲得額外的調試信息,這導致我SSL_connect。
(僅供參考,export LD_DEBUG=files isql sospos
是我用過的東西。)
有什麼想法?這讓我瘋狂,因爲它看起來一切都在,但它仍然不起作用。最糟糕的部分是,我在Ubuntu 10.10月前設置了相同的東西,它沒有任何問題。
UPDATE:
首先,在libnzodbc.so文件LDD看起來不錯。所有的依賴都得到了滿足。
其次,我在文件中只能看到缺少的是en_US語言環境的libc.mo文件,所以我建立了一個符號鏈接到en_GB。不幸的是,它仍然拋出相同的錯誤,即使它看起來像找到了它所需要的所有其他庫。在我應該尋找的strace輸出中是否還有其他內容?
更新2:
我目前看到的問題是,ISQL尋找在ISO8859-1.so gconv_end,但是該符號不存在。有趣的是,這個符號在我的Ubuntu服務器虛擬機上不存在,並且isql工作正常。我上面指定的兩個版本的unixODBC都有相同的問題。
UPDATE 3:
O.K.用-d和-r選項重新運行ldd,是的,仍然存在問題。每個SSL *符號都缺失。我猜這意味着我創建了一個錯誤文件的符號鏈接。任何人都知道哪個ssl庫文件包含SSL_connect?
謝謝。我完全忘了strace。奇怪的是,它看起來像錯誤可能不是,至少直接,ssl相關。當我獲得更多信息時,我會發布信息。 – blockcipher