IBM DB2的Db2连接问题

时间:2011-08-08 10:40:45

标签: php db2 ibm-midrange

我正在尝试使用php连接db2数据库。现在,我将编写一些与此类似的代码(调用存储过程):

$proc = 'CALL MyLib.MySP(?, ?, ?)'; 
$stmt = db2_prepare($conn, $proc) or die("db2_prepare failed<br>"); 

// Define input variable values // 
$paramIN1  = ...; 
$paramIN2  = ...; 
$paramOUT3 = ""; 

// Define parameters // 
db2_bind_param($stmt, 1, "paramIN1", DB2_PARAM_IN); 
db2_bind_param($stmt, 2, "paramIN2", DB2_PARAM_IN); 
db2_bind_param($stmt, 3, "paramOUT3", DB2_PARAM_OUT); 

// Display results set // 
if (db2_execute($stmt)) { 
    while ($row = db2_fetch_array($stmt)) { 
        print "  {$row[0]}, {$row[1]}, {$row[5]}<br>"; 
    } 
}

连接代码:

$user = 'user';
$password = 'pass';
$hostname = 'ip';
$db = 'db';
$conn_string = "DRIVER={IBM DB2 ODBC DRIVER};HOSTNAME=$hostname;PROTOCOL=TCPIP;UID=$user;PWD=$password;DATABASE=$db;";

$conn = db2_connect($conn_string, $user, $password);

此处连接失败。 db2_conn_errormsg()返回的错误消息是:

"[IBM][CLI Driver] SQL1032N No start database manager command was issued. SQLSTATE=57019 SQLCODE=-1032"

这是一个AS / 400系统。使用odbc,我们可以毫无问题地连接和与数据库通信。

2 个答案:

答案 0 :(得分:0)

[IBM] [CLI驱动程序]是DB2 ODBC驱动程序,而不是iSeries Access ODBC驱动程序。根据我的识别,它还需要DB2 Connect来启用与AS / 400主机的连接。

使用iSeries Access ODBC驱动程序连接失败会产生以下消息:

[IBM][iSeries Access ODBC Driver]Communication link failure. comm rc=8015 - CWBSY1006 - User ID is invalid, Password length = 0, Prompt Mode = Never, System IP Address = 127.0.0.1

检查ODBC DSN上的数据库驱动程序。

ODBC Data Source Administrator

答案 1 :(得分:0)

您可以使用以下方式与db2连接:

$dbh = db2_connect('*LOCAL', $user, $password, array("i5_lib"=> $db);

如果DB2数据库和ZendServer在同一个IBM i中,那么就是'* LOCAL',否则就是DB2名称。