我正在尝试使用 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 Driver] SQL30081N 检测到通信错误。正在使用的通信协议:“TCP/IP”。正在使用的通信 API:“SOCKETS”。检测到错误的位置:“10.10.0.120”。检测错误的通信功能:“连接”。协议特定错误代码:“10061”、“ ”、“ ”。SQLSTATE=08001 SQLCODE=-30081
有人试过这个吗??
您使用的端口号不正确 - iSeries 服务器使用端口 446,而不是端口 50000。
但是,为了使用IBM Data Server Driver for ODBC、CLI 和 .Net来访问您的 iSeries 服务器,您必须拥有名为DB2 Connect的 IBM 产品的许可证。
您不需要使用 DB2 Connect,您可以使用IBM i Access for Windows产品,它提供了一个 ODBC 驱动程序来直接连接到您的 iSeries 服务器。