![](/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.