GNU/Linux >> Linux の 問題 >  >> Linux

PyODBC :ドライバーが存在しても開けない

SQL Server Linux ODBC ドライバーの Microsoft チュートリアルに従った後、Ubuntu 14 でも同じ問題が発生しました。

ファイルは存在し、ldd を実行した後、依存関係が見つからないことが示されました:

/opt/microsoft/msodbcsql/lib64/libmsodbcsql-13.0.so.0.0:/usr/lib/x86_64-linux-gnu/libstdc++.so.6:バージョン 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: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version CXXABI_1.3.8' が見つかりません (

で必要)

しばらく検索したところ、Ubuntu のレポジトリにはバージョン 3.4.20 の GLIBCXX がなく、3.4.19 だったことがわかりました。

次に、Ubuntu にレポを追加して更新し、強制的に libstdc++6 にアップグレードしました

sudo add-apt-repository ppa:ubuntu-toolchain-r/test 
sudo apt-get update
sudo apt-get upgrade
sudo apt-get install libstdc++6

問題が解決され、isql でテストされました:

+---------------------------------------+
| Connected!                            |
|                                       |
| sql-statement                         |
| help [tablename]                      |
| quit                                  |
|                                       |
+---------------------------------------+
SQL> 

その後、pdo_odbc (PHP) を使用してテストを試みたところ、同じドライバーが見つからないというエラーが表示されました。これを解決するには、libodbcinst.so.2 を修正するためのシンボリック リンクを作成する必要がありました。 :

sudo ln -s /usr/lib64/libodbcinst.so.2 /lib/x86_64-linux-gnu/libodbcinst.so.2

ここで私に合った答えを見つけました。これは python 2.7 用です (したがって、python 3.x のソリューションを探している人にはうまくいかないかもしれません)。

推奨される解決策は、libgcc を更新することです:4.8.5-2 --> 5.2.0-0

libgcc を更新するには、このコマンドを使用します

conda update libgcc

「ファイルが見つかりません (0) (SQLDriverConnect)」という同じ問題がありました MAC OS では次のコード

<ブロック引用>

cnxn =pyodbc.connect('DRIVER={SQL Server 用 ODBC ドライバー 13};SERVER=myServerIP,1433;DATABASE=myDBName;UID=sa;PWD=dbPassword')

2日間グーグルで調べた後、freetds.conf、odbcinst.ini、およびodbc.iniを変更しても問題を修正できません

最後に、DRIVER を置き換えることで解決策を見つけました 値

<ブロック引用>

cnxn =pyodbc.connect('ドライバー={/usr/local/lib/libmsodbcsql.13.dylib};SERVER=myServerIP,1433;DATABASE=myDBName;UID=sa;PWD=dbPassword')

私の開発環境

  • MAC OS エル キャピタン
  • Anaconda の Python 3.6.1

Linux
  1. Mac OS X の open コマンドに相当する Linux

  2. シンボルが存在するにもかかわらず、dlsym が NULL を返す

  3. Linux nerdtree vim でフォルダを開けない

  1. Nouveau Xorgドライバーをマルチヘッドワークステーションに使用できますか?

  2. 実行可能ファイルと同じディレクトリに .so が見つかりませんか?

  3. sudo を使用してファイルが存在するかどうかを確認するにはどうすればよいですか?

  1. Pythonのmatplotlibで「バックエンド」を設定するにはどうすればよいですか?

  2. 指定した名前の画面が存在するか確認する

  3. ディレクトリが存在するかどうかを確認するにはどうすればよいですか?