Perl DBD::ODBC到Informix DBMS

Perl DBD::ODBC到Informix DBMS,perl,odbc,informix,Perl,Odbc,Informix,我正在尝试使用DBD::ODBC在Perl脚本(v5.12.4)中建立到Informix DB的ODBC连接。我读了很多文档,似乎遇到了麻烦,希望在这里得到一些提示 我安装了unixODBC 2.2.14,其中包含空的odbcinst.ini和odbc.ini文件(我知道不太好)。我还从IBM的站点下载了用于Informix的CSDK。如果我检查DBI的可用驱动程序,Informix也会在那里列出 我想我的问题与使用驱动程序和dsn的正确信息填充.ini文件有关。我不确定Informix驱动程序

我正在尝试使用DBD::ODBC在Perl脚本(v5.12.4)中建立到Informix DB的ODBC连接。我读了很多文档,似乎遇到了麻烦,希望在这里得到一些提示

我安装了unixODBC 2.2.14,其中包含空的odbcinst.ini和odbc.ini文件(我知道不太好)。我还从IBM的站点下载了用于Informix的CSDK。如果我检查DBI的可用驱动程序,Informix也会在那里列出

我想我的问题与使用驱动程序和dsn的正确信息填充.ini文件有关。我不确定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和我的操作系统不能很好地运行,因此我无法正确安装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用户身份运行连接请求。感谢您的帮助。谢谢

您读过DBD::ODBC附带的README.informix吗?我知道它非常古老,但它至少给了您一个线索,您通常将INFORMIXDIR设置为CSDK的解包位置,并且客户端库位于/曾经位于$INFORMIXDIR/lib/cli中

您需要找到哪个共享对象是Informix ODBC驱动程序,因此请在SDK中查找以结尾的文件。因此,如果仍然有太多文件无法猜测,请尝试在这些文件上运行nm,并查找类似SQLAllochandle的符号(所有ODBC驱动程序都需要)。找到驱动程序后,需要创建ini文件,该文件可以通过“odbcinst-j”找到。在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开始工作,我很乐意接受对它的任何更改。

bohica,非常感谢您提供的信息。我发现我的CSDK很可能没有正确安装,所以我需要在移动到.ini之前纠正该部分。不能本末倒置……所以,当你解决这个问题时,请让我知道结论,我会提供自述文件。informix.Hi bohica,可以。我现在正在在线浏览所有IBM文档,希望很快就能让它工作。。。。。