【问题标题】:A communication error has been detected PHP DB2 Connection检测到通信错误 PHP DB2 连接
【发布时间】:2015-07-07 02:18:15
【问题描述】:

我尝试使用 db2cli odbc 模块和 odbc_connect 连接到 DB2/AS400 远程数据库,但返回下一个错误:

执行失败:[unixODBC][IBM][CLI Driver] 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);

请帮帮我!!

【问题讨论】:

标签: php db2


【解决方案1】:

我不熟悉 AS400,但在 Linux/UNIX 上,当服务器端的 TCP/IP 通信设置不正确时会发生此错误。我要检查两件事(在 Linux/UNIX 服务器上,不确定 AS400 等效项):

  1. netstat -na
  2. db2set DB2COMM=TCPIP

第一个命令将返回打开的 TCP/IP 侦听器列表。您的端口 55000 应该在列表中。如果不是,说明服务器没有开放通信。

第二部分在 DB2 中启用 TCP/IP 通信。请注意,/etc/servicesSVCENAME DBM CFG 参数存在依赖关系。必须重启服务器,DB2COMM 才能生效。正确启用后,DB2 应该开始在配置的端口上侦听。

如果这些都没有帮助,那么可能是防火墙阻止了对 DB2 服务器的访问。

再次,如果此回复不适用于 AS400,我深表歉意。

【讨论】:

    猜你喜欢
    • 2011-01-01
    • 2016-07-21
    • 1970-01-01
    • 1970-01-01
    • 2015-07-28
    • 2017-12-10
    • 1970-01-01
    • 2022-07-17
    • 2014-08-16
    相关资源
    最近更新 更多