![](/img/trans.png)
[英]connecting to db2 through pdo_ibm module manually configured error SQL10007N -5005
[英]PHP to DB2 with PDO_IBM Error : SQLDriverConnect: -1390 [IBM] [CLIDRIVER] SQL10007N
在 Ubuntu 22.04 我试图通过驱动程序 pdo_ibm.so 将 PHP 与 DB2 数据库连接起来
我遵循了本指南以及 IBM 文档: https://github.com/php/pecl-database-pdo_ibm
我已经编译了 1.5.0 版本。 进入“.so”文件并将其放置在相应驱动程序的文件夹中。
但是我收到以下错误
SQLDriverConnect:-1390 [IBM] [CLIDRIVER] SQL10007N 无法检索消息“0”。 原因代码“3”。
使用以下 PHP 代码:
var_dump($dsn);
echo "". PHP_EOL;
var_dump($this->_config['username']);
var_dump($this->_config['password']);
var_dump($this->_config['driver_options']);
$this->_connection = new PDO(
$dsn,
$this->_config['username'],
$this->_config['password'],
$this->_config['driver_options']
);
/*$this->_connection = new PDO("ibm:DRIVER={IBM DB2 ODBC DRIVER};DATABASE=testdb;" .
"HOSTNAME=localhost;PORT=50000;PROTOCOL=TCPIP;", "db2inst1", "123456", array(
PDO::ATTR_PERSISTENT => FALSE,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)
); */
我正在使用在 ~/.bashrc 文件中设置的以下环境变量:
ODBCHOME=/home/poc-dev/etc
ODBCINI=/home/poc-dev/clidriver/system_odbc.ini
DB2INSTANCE=db2inst1
DB2HOME=/home/poc-dev/clidriver
IBM_DB_HOME=/home/poc-dev/clidriver
LD_LIBRARY_PATH=/home/poc-dev/clidriver/lib
_=/usr/bin/printenv
我已成功将 DBeaver 和 Isql 连接到数据库
我错过了什么?
Apache2 使用“www-data”用户运行 PHP。正如用户 mao 指出的那样,“www-data”必须在所有意义上都具有对 DB2 CLIDRIVER 的完全访问权限。
我发现我必须在 etc/enviroment 文件中放置与 ~/.bashrc 完全相同的变量(我错误地认为我将它们设为全局),在我这样做之后我可以看到环境变量作为“www-data “我通过命令验证的用户:
sudo -u www-data printenv
我确认了 DB2 CLIDRIVER 文件夹的 ENV 变量:/home/poc-dev/clidriver 在那里,但它们有 755 权限,我需要通过命令将其更改为 777 权限:
sudo chmod 777 -R /home/poc-dev/
之后,我通过命令在用户“www-data”上测试了 ISQL 命令(因为我第一次意识到我收到一条消息,其中 ISQL 找不到其中一个库,结果证明是权限问题):
sudo -u www-data isql TEST db2inst1 123456
“TEST”是在 odbc.ini 中注册的 DSN,“db2inst1”是数据服务器上的用户(在本例中是虚拟机)
然后我继续使用:
$this->_connection = new PDO("ibm:DRIVER={IBM DB2 ODBC DRIVER};DATABASE=testdb;" .
"HOSTNAME=localhost;PORT=50000;PROTOCOL=TCPIP;", "db2inst1", "123456", array(
PDO::ATTR_PERSISTENT => FALSE,
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)
);
在 PHP。希望这对某人有帮助
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.