使用PHP 5.3.6-13ubuntu3.6对DB2实例进行ODBC连接失败

时间:2012-03-13 18:21:38

标签: php odbc db2 ibm-midrange

我已经为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包中。

感谢您的信息

尼古拉斯。

1 个答案:

答案 0 :(得分:3)

数据库主机服务器可能尚未启动。数据库主机服务器接受与数据库的TCP / IP连接。

您可以使用命令WRKACTJOB SBSD(QSERVER) JOB(QZDASRVSD)检查当前是否处于活动状态。

启动它的命令是:STRHOSTSVR SERVER(*DATABASE)

默认端口为8471。