xawi2000 发表于 2014-01-16 14:06

用ESQL同时连接多个informix数据库问题

本帖最后由 xawi2000 于 2014-01-16 14:18 编辑

服务器AIX 6,数据库informix,现在遇到一个问题,

某台服务器上有二个数据库a和b,我希望同时打开二个数据库或者二个连接进行访问。

我使用ESQL进行操作,代码如下:$connect to $szbcmdb as 'connbcm';
if (sqlca.sqlcode)
{
   printf("connect database [%s] fail: sql code = [%d]\n", szbcmdb, sqlca.sqlcode);
   exit(-1);
}
printf("connect database [%] OK\n", szbcmdb);
$connect to $szcdtdb as 'conncdt';
if (sqlca.sqlcode)
{
   printf("connect database [%s] fail: sql code = [%d]\n", szcdtdb, sqlca.sqlcode);
   exit(-1);
}
printf("connect database [%] OK\n", szcdtdb);上面连接二个数据库的代码,注释掉任何一个都可以正常访问,二个同时访问的话就
只能连接上第一个,第二个数据库会报-2700错误。

去百度了半天自己想了半天也没找到解决方案,求高手指点,谢谢!

xawi2000 发表于 2014-01-16 16:56

写错了,错误码是-27000,少写了个0.

大梦 发表于 2014-01-16 20:47

在同一个服务器上可以直接建个同义词
或上直接db:table这种方式不行吗?

xawi2000 发表于 2014-01-17 08:31

昨天查了一下错误码,好像是因为informix配置用的是IPC方式,所以只支持单连接。
今天改成TCP方式试试。

xawi2000 发表于 2014-01-17 08:32

大梦 发表于 2014-01-16 20:47 static/image/common/back.gif
在同一个服务器上可以直接建个同义词
或上直接db:table这种方式不行吗?


不懂,建同义词是什么意思啊?
db:table这种方式不行,得先有连接。

D2002 发表于 2014-01-22 10:50

两个概念:
1) 同一个数据库Server下, 只要connect一次,就可以访问同一个数据库Server下的多个数据库(如果有多个数据库实例的话)

2) 不能同时访问不同的数据库Server下的数据库实例,在一个connect情况下,如果要访问另一个数据库Server下的数据库实例,目前已经connect的链接须disconnect,才能connect一个新的数据库Server

3sane 发表于 2014-01-22 11:55

回复 1# xawi2000


    可以理解为,同时连接后,如果$select ...,怎么区别你用哪个数据库的连接?

   这个和用IPC还是TCP没有关系。

   可以用db:table方式,但是如果是跨INSTANCE,我还不确定db:table@INST是否可行。

   不过效率还是有点低,建议独立进程,IPM或SOCKET交换数据?

xawi2000 发表于 2014-01-26 16:51

我用代码中的那咱方式,一直报-27000错误,网上查到的原因是因为IPC方式,

目前和领导沟通过了,用单实例方式,即每次切换数据库的时候先关闭前一个数据库。

xawi2000 发表于 2014-01-26 17:32

我刚试了下用ESQL的方法可以用db:table来访问同一服务器上不同数据库的同名表,

但是如果我的db是一个变量,写成$db:table它就不认识了啊。

有什么方法可以解决?
页: [1]
查看完整版本: 用ESQL同时连接多个informix数据库问题