通过perl在sqlhosts中的Informix dbserver连接

时间:2014-08-04 15:57:34

标签: perl informix

我想在sqlhosts中添加一个新的Informix服务器条目,但我不太确定它会如何影响现有连接。

目前sqlhosts只包含一个服务器条目......

 dbserver       onsoctcp    111.111.111.20      7101

数据库句柄是在现有的perl模块中创建的(db是服务器上的数据库)...

my $dsn = "DBI:Informix:db";
my $dbh = DBI->connect($dsn,"user","password");

请注意,永远不会引用“dbserver”。

我想将测试服务器添加到sqlhosts。像这样......

 dbserver       onsoctcp    111.111.111.20      7101
 dbserver_test  onsoctcp    111.111.111.21      7101

在sqlhosts中只有一个条目,一切都运行正常。但我的连接从不引用sqlhosts中的服务器名称。

所以,我的问题......

Informix只是尝试使用唯一可用的吗?

在sqlhosts中添加第二个服务器条目会强制我在连接字符串中包含服务器名称吗?

谢谢!

2 个答案:

答案 0 :(得分:2)

Informix客户端使用环境变量来解析主机和其他配置;检查INFORMIXDIR是否设置为安装Informix CSDK的路径(我假设是),并设置INFORMIXSERVER以指向sqlhosts中的新条目。请参阅IBM知识库中的this article

或者,使用db@server数据源格式:

my $dbh = DBI->connect("DBI:Informix:db@server", "user", "password");

答案 1 :(得分:0)

也许是权限问题?来自文档:

  

请注意,您可能还可以连接到其他数据库   由DBI-> data_sources列出,使用其他符号来标识   数据库。例如,您可以连接到" dbase @ server"如果"服务器"   出现在sqlhosts文件和数据库" dbase"存在于   服务器和服务器已启动,您有权同时使用   服务器和服务器上的数据库等。另外,你可能不会   能够连接到列出的每个数据库(如果有)   至少没有给出数据库的连接权限。然而,   DBI-> data_sources方法列出的数据库肯定存在,   尝试连接这些来源是合法的。

http://search.cpan.org/~johnl/DBD-Informix-2013.0521/Informix.pm