我已经为Linux安装了DB2 Express-C V9.7,unixODBC php5-odbc和iSerie-5.4.0-1.6驱动程序,但是当我尝试连接到DB2服务器时,请回复此消息:
[unixODBC][IBM][iSeries Access ODBC Driver]Communication link failure. comm rc=10061 -
CWBCO1049 - The iSeries server application is not started, SQL state 08004 in SQLConnect
我注意到tcpdump,php尝试连接端口8741而不是50000.
netstat -anp告诉我DB2 listen port 50000
这是我的配置文件
/etc/odbcinst.ini:
[DB2]
Description = ODBC for DB2
Driver = /opt/ibm/iSeriesAccess/lib/libcwbodbc.so
Setup = /opt/ibm/iSeriesAccess/lib/libcwbodbcs.so
FileUsage = 1
Threading = 2
DontDLClose = 1
UsageCount = 1
/etc/odbc.ini
[local_db2]
Driver = DB2
System = localhost
User = db2inst1
Password = MySecretPassword
Port = 50000
Database = dbname
Option = 1
我的PHP脚本:
$dsn = "local_db2";
$user = "db2inst1";
$passwd = "MySecretPassword";
$conn = odbc_connect($dsn,$user,$passwd );
echo "votre id de connexion est : $conn";
if ($conn <= 0) {
echo "\nErreur\n";
}
else { echo "\nSuccès\n";
}
odbc_close($conn);
现在我可以连接到DB2服务器了。我在/ etc / services中更改了db2inst1的端口,但是服务器没有响应我。
我的错误信息是(过了一会儿): [unixODBC] [IBM] [System i Access ODBC Driver]通信链路故障。 comm rc = 8405 - CWBCO1047 - IBM i服务器应用程序断开连接,SQLConnect中的SQL状态08S01
结论:
第一个问题是iSeries的驱动程序不是我配置的正确驱动程序,所以我安装了包含linux驱动程序的DB2 ODBC CLI driver。
第二个问题是odbc配置。
我的工作/etc/odbc.ini配置:
[DBNAME]
Driver=DB2
我的工作/etc/odbcinst.ini配置:
[ODBC]
Trace = yes
Tracefile = /tmp/odbc.log
[DB2]
Description = DB2 Driver
Driver = /opt/ibm/db2/V9.7/lib32/libdb2.so
FileUsage = 1
DontDLClose = 1
您可以在/tmp/odbc.log中获得有关odbc连接的更多详细信息。 我也使用了测试odbc连接的isql程序。 这个程序在unixodbc linux包中。
感谢您的信息
尼古拉斯。
答案 0 :(得分:3)
数据库主机服务器可能尚未启动。数据库主机服务器接受与数据库的TCP / IP连接。
您可以使用命令WRKACTJOB SBSD(QSERVER) JOB(QZDASRVSD)
检查当前是否处于活动状态。
启动它的命令是:STRHOSTSVR SERVER(*DATABASE)
。
默认端口为8471。