2012-04-24 191 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

相关问题