用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错误。
去百度了半天自己想了半天也没找到解决方案,求高手指点,谢谢! 写错了,错误码是-27000,少写了个0. 在同一个服务器上可以直接建个同义词
或上直接db:table这种方式不行吗? 昨天查了一下错误码,好像是因为informix配置用的是IPC方式,所以只支持单连接。
今天改成TCP方式试试。 大梦 发表于 2014-01-16 20:47 static/image/common/back.gif
在同一个服务器上可以直接建个同义词
或上直接db:table这种方式不行吗?
不懂,建同义词是什么意思啊?
db:table这种方式不行,得先有连接。 两个概念:
1) 同一个数据库Server下, 只要connect一次,就可以访问同一个数据库Server下的多个数据库(如果有多个数据库实例的话)
2) 不能同时访问不同的数据库Server下的数据库实例,在一个connect情况下,如果要访问另一个数据库Server下的数据库实例,目前已经connect的链接须disconnect,才能connect一个新的数据库Server 回复 1# xawi2000
可以理解为,同时连接后,如果$select ...,怎么区别你用哪个数据库的连接?
这个和用IPC还是TCP没有关系。
可以用db:table方式,但是如果是跨INSTANCE,我还不确定db:table@INST是否可行。
不过效率还是有点低,建议独立进程,IPM或SOCKET交换数据? 我用代码中的那咱方式,一直报-27000错误,网上查到的原因是因为IPC方式,
目前和领导沟通过了,用单实例方式,即每次切换数据库的时候先关闭前一个数据库。 我刚试了下用ESQL的方法可以用db:table来访问同一服务器上不同数据库的同名表,
但是如果我的db是一个变量,写成$db:table它就不认识了啊。
有什么方法可以解决?
页:
[1]