2016-02-13 57 views
8

我想從python應用程序與pyodbc連接到MS SQL服務器。我有pyodbc和unixODBC安裝,我試圖安裝Linux的MS驅動程序。我認爲問題是MS驅動程序缺少依賴關係,但儘可能接近我已經安裝的依賴關係。因爲微軟的驅動程序不能通過百勝安裝,所以我必須安裝並運行安裝腳本。所以,我確定有一些手動工作,我必須做的,以獲得下面的鏈接缺失解決。我不知道如何做到這一點,因爲我在Linux上是新手。我已經包含了我的配置文件,以防萬一。libmsodbcsql-13.0.so.0.0阻止pyODBC與MS SQL連接的鏈接器錯誤。 CentOS 7

當我運行...

ldd /opt/microsoft/msodbcsql/lib64/libmsodbcsql-13.0.so.0.0 

我得到以下...

/opt/microsoft/msodbcsql/lib64/libmsodbcsql-13.0.so.0.0: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.20' not found (required by /opt/microsoft/msodbcsql/lib64/libmsodbcsql-13.0.so.0.0) 

/opt/microsoft/msodbcsql/lib64/libmsodbcsql-13.0.so.0.0: /lib64/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by /opt/microsoft/msodbcsql/lib64/libmsodbcsql-13.0.so.0.0) 

linux-vdso.so.1 => (0x00007fff22b27000) 
libdl.so.2 => /lib64/libdl.so.2 (0x00007f03de43f000) 
libodbcinst.so.2 => /lib64/libodbcinst.so.2 (0x00007f03de22d000) 
libuuid.so.1 => /lib64/libuuid.so.1 (0x00007f03de027000) 
libgss.so.3 => not found 
libkrb5.so.3 => /lib64/libkrb5.so.3 (0x00007f03ddd42000) 
libcrypto.so.1.0.0 => not found 
libssl.so.1.0.0 => not found 
libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007f03dda39000) 
....(THE REST ARE FOUND) 

odbcinst.ini odbc.ini

任何幫助或建議,歡迎。謝謝!

+0

你的屏幕截圖是不可讀的。你不能像在'ldd'輸出中那樣將錯誤信息複製/粘貼到你的Q中。好luc ,. – shellter

+0

我認爲你正在使用msodbcsql的unixODBC不兼容版本。檢查命令'''odbc_config --version'''是否返回msodbcsql的預期版本。 – bull90

回答

2

我記得我也有這個問題,但它是一年多以前,我沒有訪問該服務器了。

據我記得這是一個版本不匹配。如果您看到您的ldd輸出,他們正在尋找libgss.so.3,libcrypto.so.1.0.0等。也許您的系統上安裝了這些庫的不同版本。

通過查看我的安裝注意事項,它看起來像我通過創建(軟)鏈接「指向」我的系統上的庫來解決問題。而且 - 當然 - 我給這些鏈接名稱msodbc正在尋找。是的......有點「粗魯」但它對我有用。

+0

感謝您的確認。這是我領導的方向。快速提問。我是否在二進制文件所在的位置創建軟鏈接?所以在我的情況下,它會進入/lib64/libstdc++.so.6並重定向到實際版本的位置?任何可能的樣本ln -s命令讓我開始。謝謝。 –

+0

我無法在該服務器上的/ lib或/ usr/lib下創建軟鏈接(安全限制,我沒有root密碼)。所以...我在我的home-dir('$ {HOME}/mslib /')目錄下創建了這些軟鏈接,並將這個目錄添加到我的LD_LIBRARY_PATH中... – mauro

+0

示例命令:'mkdir $ HOME/mslib'和然後'ln -s /usr/lib/libgss-3.0.0 $ HOME/mslib/libgss-2.8.0'(我不記得版本號 - 我在這裏寫了隨機數字)。最後把你的新的LIB目錄**放在**之前:'export LD_LIBRARY_PATH = $ {HOME}/mslib:$ {LD_LIBRARY_PATH}' – mauro