2012-04-24 192 views
2

我正在嘗試使用DBD :: ODBC在一個Perl腳本(v5.12.4)內建立一個到Informix數據庫的ODBC連接。我已經閱讀了大量的文檔,似乎正在打牆,並希望在這裏獲得一些提示。Perl DBD :: ODBC到Informix DBMS

我有unixODBC 2.2.14安裝了空odbcinst.ini和odbc.ini文件(不好,我知道)。我還從IBM網站下載了針對Informix的CSDK。如果我查看可用的DBI驅動程序,那麼也會列出Informix。

我想我的問題與使用驅動程序和dsn的正確信息填充.ini文件有關。我不確定Informix驅動程序的位置,我如何引用它們或dsn的語法。我一直在使用DBI和MySQL一段時間,但是ODBC現在似乎更加深入和深入我的腦海。

當我試圖運行一個腳本來連接,我得到:

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

如果我錯過任何重要的細節在後請讓我知道,我會包括。

謝謝!

UPDATE

我得到了一個單獨的後一些幫助找到Java和我的操作系統沒有發揮好,所以我沒能得到正確安裝CSDK。所以,我撕掉了Ubuntu並安裝了SuSE。我(我希望)現在已經正確安裝了CSDK並更新了.ini文件。在附註中,我無法運行nm查看符號,但在/ opt/IBM/informix/lib/dir中有幾個.so文件,我試圖在odbcinst.ini文件中引用它。當我運行isql連接時,出現:

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

對此問題有任何建議嗎?我檢查了流氓空間/字符文件,並以root身份運行連接請求。任何幫助表示讚賞。謝謝!

回答

2

您是否閱讀過包含在DBD :: ODBC中的README.informix?我知道這是非常古老的,但它至少給你一個線索,你通常將INFORMIXDIR設置爲CSDK解壓縮的位置,而客戶端庫位於$ INFORMIXDIR/lib/cli中。

您需要找到哪個共享對象是Informix ODBC驅動程序,因此請在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的任何更改,一旦你得到它的工作。

+0

bohica,非常感謝您的信息。我發現我的CSDK很可能沒有正確安裝,因此我需要在移動到.ini之前更正該部分。不能把馬車放在馬前..... – 2012-04-24 17:09:25

+0

對不起,我在上面編輯了錯誤的帖子。新手...... – 2012-04-25 16:14:51

+0

所以,當你解決這個問題時,請讓我知道結論,我將推薦README.informix。 – bohica 2012-04-25 20:32:38

相關問題