3

現在、データベースに接続するための単純な python スクリプトを実行しています。

import pyodbc
cnxn = pyodbc.connect('DRIVER={Teradata};DBCNAME=(MYDB);UID=(MYUSER); PWD=(MYPASS);QUIETMODE=YES')

サーバーと資格情報が明らかに置き換えられています。ただし、このスクリプトを実行すると、次のエラーが発生します。

pyodbc.Error: ('200', '[200] [unixODBC][eaaa[DCTrdt rvr o nuhifraint o n (0) (SQLDriverConnectW)')

私が見つけることができた唯一のヘルプはTeradata ODBC ドライバーがインストールされていることですが、接続できない理由がわかりません。誰でもこれについて何か考えがありますか?

4

2 に答える 2

0

この「英語以外」のエラーメッセージの問題に遭遇しました。間違ったバージョンの libodbc.so と libodbcinst.so が使用されたためだと思います。/usr/lib/... のリンクを変更して、Teradata がインストールされているバージョンを指すようにするとうまくいきました。Ubuntu 12.04、64 ビットのデフォルトのインストール ディレクトリを使用するコマンドは次のとおりです。

cd /usr/lib/x86_64-linux-gnu
ls -lha | grep odbc (To should see the files below which are to be replaced).
sudo mv libodbc.so.1.0.0 Xlibodbc.so.1.0.0
sudo ln -s /opt/teradata/client/14.10/odbc_64/lib/libodbc.so libodbc.so.1.0.0 
sudo mv libodbcinst.so.1.0.0 Xlibodbcinst.so.1.0.0
sudo ln -s /opt/teradata/client/14.10/odbc_64/lib/libodbcinst.so libodbcinst.so.1.0.0

以前に (apt-get を介して) odbcinst もインストールしていたので、両方のファイルをリダイレクトしました。しかし、おそらく最初のものだけが必要です。

于 2013-11-15T11:23:04.113 に答える