dfxh 发表于 2009-05-13 13:24

DB2 ESQL/C 为什么不连接DB2,而去连接INFORMIX

操作系统
Red Hat Enterprise Linux AS release 4 (Nahant)
Kernel 2.6.9-5.ELsmp on an i686

版本情况如下
$ db2level
DB21085I实例 "db2inst1" 使用 "32" 位和 DB2 代码发行版 "SQL08023",级别标识为
"03040106"。
参考标记为 "DB2 v8.1.2.96"、"s050811" 和 "MI00142",修订包为 "10"。
产品是在 "/opt/IBM/db2/V8.1" 处安装的。

$ onstat -V
IBM Informix Dynamic Server Version 10.00.UC1    Software Serial Number AAA#B000000

$ esql -V
IBM Informix CSDK Version 2.90, IBM Informix-ESQL Version 2.90.UC1
Software Serial Number RDS#N000000

/etc/services 相关informix和db2的配置,查看services文件,端口与其它服务无冲突
informix      5000/tcp                        # Informix Database Services
DB2_db2inst1    6000/tcp
DB2_db2inst1_16001/tcp
DB2_db2inst1_26002/tcp
DB2_db2inst1_END      6003/tcp
db2c_db2inst15001/tcp

查看端口情况,没有问题
$ netstat -an|grep 500
tcp      0      0 192.168.1.66:5000          0.0.0.0:*                  LISTEN      
tcp      0      0 0.0.0.0:5001                0.0.0.0:*                  LISTEN

连接db2代码
EXEC SQL CONNECT TO 'mst_db';
判断返回sqlca.sqlcode为 -130081

使用db2查看错误码,经查看为 通讯错
db2 ? sql30081

后发现db2的连接命令的通讯报文竟然发送到了informix数据库这里了,经查看online.log有如下记录,每进行一次db2的连接就会出现下面一条记录在online.log里面.
19:34:26listener-thread: err = -408: oserr = 0: errstr = : Invalid message type received from the sqlexec process.

根据相关的资料使用esql进行编译,只要加上-db2参数即可连接db2数据库.

另数据库通过windows终端WINSQL软件配置连接都可正常访问.

-------------------------------------------------------------------------------------------------------

问题:在linux下从informix数据库迁移到db2数据库,代码编译-db2通过,但是为什么还是连接informix数据库,问题在哪里?

dfxh 发表于 2009-05-19 16:36

自己解决了

DB2 ESQL/C 编译使用的是 Informix 的 esql命令。其它的东西都使用informix
连接的问题是 $INFORMIXDIR/etc/sqlhosts 文件中需要配置成 db2 的。
.bash_profile 里面的 $INFORMIXSERVER 也需要配置成 db2 的。
页: [1]
查看完整版本: DB2 ESQL/C 为什么不连接DB2,而去连接INFORMIX