2

DBD::ODBC を使用して、Perl スクリプト (v5.12.4) 内で Informix DB への ODBC 接続を確立しようとしています。私は多くのドキュメントを読み、壁にぶつかっているようで、ここでいくつかのヒントを得たいと思っていました.

私は unixODBC 2.2.14 を空の odbcinst.ini および odbc.ini ファイルと共にインストールしました (良くない、私は知っています)。また、IBM のサイトから Informix 用の CSDK をダウンロードしました。DBI の利用可能なドライバを確認すると、Informix もそこにリストされています。

私の問題は、.ini ファイルにドライバーと dsn の正しい情報を入力することに関連していると思います。Informix ドライバーがどこにあるか、それらを参照する方法、または dsn の構文がわかりません。私は mysql で DBI をしばらく問題なく使用してきましたが、ODBC は今のところより詳細で、少し頭を悩ませているようです。

スクリプトを実行して接続しようとすると、次のようになります。

DBI connect........failed: [unixODBC][Driver Manager]Data source name not found, and no default driver specified (SQL-IM002) at Informix.pl line 20

投稿に重要な詳細が欠けている場合はお知らせください。記載します。

ありがとう!

アップデート

別の投稿で、Java と私の OS が正常に動作しないことを発見したため、CSDK を正しくインストールできませんでした。というわけで、Ubuntu をリッピングして、SuSE をインストールしました。CSDK を正しくインストールし (希望)、.ini ファイルを更新しました。ちなみに、nm を実行してシンボルを表示することはできませんが、odbcinst.ini ファイルで参照しようとしている /opt/IBM/informix/lib/ ディレクトリにいくつかの .so ファイルがあります。isql 接続を実行すると、次のようになります。

[01000][unixODBC][Driver Manager]Can't open lib '/opt/IBM/informix/lib/nameofdriver.so.   : file not found

これについて何かお勧めはありますか?ファイルに不正なスペース/文字がないかチェックし、ルートとして接続要求を実行しています。どんな助けでも大歓迎です。ありがとう!

4

1 に答える 1

2

DBD :: ODBCに含まれているREADME.informixを読みましたか?非常に古いことは知っていますが、少なくとも、通常はINFORMIXDIRをCSDKが解凍され、クライアントライブラリが$ INFORMIXDIR / lib/cliにある場所に設定しているという手がかりが得られます。

どの共有オブジェクトがInformixODBCドライバーであるかを見つける必要があるので、SDKで.soで終わるファイルを探します。それでも推測できない場合は、それらでnmを実行して、SQLAllochandle(すべてのODBCドライバーに必要)のようなシンボルを探してください。 )。ドライバを見つけたら、「odbcinst-j」で見つけることができるiniファイルを作成する必要があります。odbcinst.iniファイルに次のようなものを追加します。

[informix]
Description=Informix ODBC driver
Driver=/path/to/informix_odbc_driver_shared_object
DontDLClose=1

次に、odbc.iniに次のようなDSNを作成する必要があります。

[mydsn]
Driver = informix
Database=myDataBase;
Host=192.168.10.10;
Server=db_engine_tcp;
Service=1492;
Protocol=onsoctcp;

接続文字列サイトからそれらを盗んだので、informixドキュメントで確認する必要があります。

次に、次を使用できます。

isql -v mydsn myusername mypassword

接続をテストします。

README.informixが機能するようになったら、変更を喜んで受け入れます。

于 2012-04-24T14:06:32.613 に答える