Informixdb 多连接

Posted

技术标签:

【中文标题】Informixdb 多连接【英文标题】:Informixdb multiple connections 【发布时间】:2017-04-24 21:47:01 【问题描述】:

我正在尝试使用 Informix 创建多个连接。这里的问题是我所有的服务器和我的数据库都具有相同的名称,所以当我无法同时连接到它们时,因为我读取了这个名称应该是唯一的!

现在我正在尝试使用命令:

os.putenv('INFORMIXSQLHOSTS','/home/informix/etc/sqlhosts1')

所以我可以使用多个 sqlhosts 文件,但这不起作用。另外,我读到这是一种不好的做法,所以我正在寻找正确的方法来做到这一点。

我有 4 台服务器,名称为:

cms_net

另外数据库名称是:

cms

都在不同的 IP 服务器中。

我希望有人可以帮助我以正确的方式连接到这些!

【问题讨论】:

【参考方案1】:

您可以尝试覆盖连接字符串中的主机。

我在名为“irk”的机器中定义了一个“irk1210”

informix@irk:/usr3/products/12.10$ grep irk1210 $INFORMIXSQLHOSTS
irk1210shm onipcshm irk irk1210shm
irk1210 onsoctcp 9.20.143.225  3046   
dr_irk1210 drsoctcp irk 3047 

从 Python(我猜这就是您正在使用的)我可以使用“irk1210”作为服务器名称进行连接(信息将从 sqlhosts 文件中选择)

informix@irk:/usr3/products/12.10$ python
Python 2.7.3 (default, Oct 26 2016, 21:04:23) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import informixdb
>>> conn = informixdb.connect('sysmaster@irk1210',user='informix',password='ximrofni')
>>> print conn
<_informixdb.Connection object at 0x9d287a0>
>>> 

或者指定服务器的全部信息(服务器/协议/主机/服务)

informix@irk:/usr3/products/12.10$ python
Python 2.7.3 (default, Oct 26 2016, 21:04:23) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import informixdb
>>> conn = informixdb.connect('sysmaster@irk1210|onsoctcp|9.20.143.225|3046',user='informix',password='ximrofni')
>>> print conn
<_informixdb.Connection object at 0x93c37a0>
>>>

执行后面的操作可以让您选择为服务器指定不同的主机 (ip):

informix@irk:/usr3/products/12.10$ python
Python 2.7.3 (default, Oct 26 2016, 21:04:23) 
[GCC 4.6.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import informixdb
>>> conn = informixdb.connect('sysmaster@irk1210|onsoctcp|10.1.1.10|3046',user='informix',password='ximrofni')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
_informixdb.OperationalError: SQLCODE -908 in CONNECT: 
08004: Client unable to establish connection
IX000: ISAM error:  record is locked.

>>> 

我收到 -908 错误,因为我在 10.1.1.10 中没有服务器,但这证明驱动程序正在尝试连接到与 irk1210 服务器的 SQLHOSTS 中指定的 IP 不同的 IP

【讨论】:

我认为它比 sqlhosts env hack 8)

以上是关于Informixdb 多连接的主要内容,如果未能解决你的问题,请参考以下文章

通过 python informixdb 寻找 Informix 的 SQL 插入语法

在 informix DB 中是不是定义了任何 alpha 逻辑

在 Windows 上使用 pyodbc 连接到 Informix

需要了解 Informix DB 中的 dbimport 实用程序

Informix“加载”命令在 Python pyodbc 中不起作用

Perl DBD::ODBC 到 Informix DBMS