我正在尝试使用 ibm_db2 扩展来访问 iSeries DB2 数据库。
这是测试代码(取自这里)
<?php
$database = 'ALI452BFAL'; //library
$user = 'STN452';
$password = '**********';
$hostname = 'myserverip';
$port = 50000;
$conn_string = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$database;" .
"HOSTNAME=$hostname;PORT=$port;PROTOCOL=TCPIP;UID=$user;PWD=$password;";
$conn = db2_connect($conn_string, '', '');
if ($conn) {
print "ok";
db2_close($conn);
}
else {
echo db2_conn_error() . '<br>' . db2_conn_errormsg();
}
?>
我已经安装了一个包含 db2 驱动程序的非常基本的包,并将其添加为扩展。
(用于 ODBC、CLI 和 .NET.msi 的 IBM 数据服务器驱动程序)
这是我的结果:
08001 [IBM][CLI 驱动程序] SQL30081N 检测到通信错误。正在使用的通信协议:“TCP/IP”。正在使用的通信 API:“SOCKETS”。检测到错误的位置:“10.10.0.120”。检测到错误的通信功能:“connect”。协议特定的错误代码:“10061”,““,”“。SQLSTATE=08001 SQLCODE=-30081
有人尝试过这个吗?
答案1
您使用的端口号不正确 – iSeries 服务器使用端口 446,而不是端口 50000。
然而,为了使用适用于 ODBC、CLI 和 .Net 的 IBM 数据服务器驱动程序要访问您的 iSeries 服务器,您必须拥有 IBM 产品的许可证,该产品名为DB2 连接。
您不需要使用 DB2 Connect,可以使用适用于 Windows 的 IBM i Access产品,它提供了 ODBC 驱动程序以直接连接到您的 iSeries 服务器。