我尝试使用db2cli odbc模块和odbc_connect连接到DB2 / AS400远程数据库,但返回下一个错误:
执行失败:[unixODBC] [IBM] [CLI驱动程序] SQL30081N A. 已检测到通信错误。通信协议正在 使用:“TCP / IP”。正在使用的通信API:“SOCKETS”。地点 检测到错误的地方:“10.10.100.5”。沟通功能 检测错误:“recv”。协议特定的错误代码:“”, “”,“0”。 SQLSTATE = 08001
这是我的PHP代码:
<?php
$database = 'xxxx';
$user = 'xxxx';
$password = 'xxxx';
$hostname = '10.10.100.5';
$port = '55000';
$driver = 'DB2';
$conn_string = "DRIVER={$driver};DATABASE=$database;HOSTNAME=$hostname;PORT=$port;PROTOCOL=TCPIP;UID=$user;PWD=$password;";
if (!$db = odbc_connect ($conn_string, $user, $password)) {
print("Execution failed:\n");
}
else echo 'Success!';
odbc_close($db);
请帮帮我!!
答案 0 :(得分:0)
我不熟悉AS400,但在Linux / UNIX上,当在服务器端未正确设置TCP / IP通信时会发生此错误。我要检查两件事(在Linux / UNIX服务器上,不确定AS400等价物):
netstat -na
db2set DB2COMM=TCPIP
第一个命令将返回打开的TCP / IP侦听器列表。您的端口55000应该在列表中。如果不是,则表示服务器未打开通信。
第二部分启用DB2中的TCP / IP通信。请注意,/etc/services
和SVCENAME
DBM CFG参数存在依赖关系。必须重新启动服务器才能使DB2COMM
生效。正确启用后,DB2应该开始在配置的端口上进行侦听。
如果这些都没有帮助,那么防火墙可能会阻止对DB2服务器的访问。
如果此回复不适用于AS400,我再次道歉。