2016-02-13 11 views
8

pyodbcを持つPythonアプリケーションからMS SQLサーバーに接続しようとしています。 pyodbcとunixODBCがインストールされていて、linux用のMSドライバをインストールしようとしました。私は問題は、MSドライバには依存関係がないことですが、依存関係がインストールされていると言えるほど近くにあると思います。マイクロソフトのドライバはyumからインストールできないので、インストールスクリプトを実行して実行する必要がありました。だから私は解決するために下に欠けているリンクを得るために必要ないくつかの手作業があることを確かめている。私はこれを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にコピー/ペーストすることはできません。幸運を祈る、。 – shellter

+0

私はmsodbcsqlのunixODBCと互換性のないバージョンで作業していると思います。コマンド '' 'odbc_config --version''がmsodbcsqlの期待バージョンを返すことを確認してください。 – bull90

答えて

2

私もこの問題を抱えていたことを覚えていますが、それは1年以上前です。もうそのサーバーにアクセスできません。

私が覚えている限り、バージョンの不一致がありました。 lddの出力を見ると、libgss.so.3、libcrypto.so.1.0.0などが検索されます。これらのライブラリの異なるバージョンがシステムにインストールされている可能性があります。

私のインストールノートを見ると、自分のシステム上にあるライブラリを "指し示す"リンクを作成することで問題を解決したようです。そして、もちろん - 私はこれらのリンクにmsodbcが探していた名前を付けました。はい...少し「無礼」ですが、それは私のために働いていました。

+0

ご確認いただきありがとうございます。これが私が目指していた方向です。クイック質問。バイナリがファイルを探している場所にソフトリンクを作成しますか?したがって、私の場合、/lib64/libstdc++.so.6に入り、実際のバージョンがどこにでもリダイレクトされますか?サンプルln -sコマンドを使用すると、私を起動させることができます。ありがとう。 –

+0

そのサーバーの/ libまたは/ usr/libにソフトリンクを作成できませんでした(セキュリティの制限と私はrootパスワードを持っていませんでした)。だから...私は自分のホームディレクトリ( '$ {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

関連する問題