[英]A communication error has been detected PHP DB2 Connection
我嘗試使用db2cli odbc模塊和odbc_connect連接到DB2 / AS400遠程數據庫,但是返回下一個錯誤:
執行失敗:[unixODBC] [IBM] [CLI驅動程序] SQL30081N已檢測到通信錯誤。 使用的通信協議:“ TCP / IP”。 使用的通信API:“ SOCKETS”。 檢測到錯誤的位置:“ 10.10.100.5”。 通訊功能檢測到錯誤:“ recv”。 協議特定的錯誤代碼:“ ”,“ ”,“ 0”。 SQLSTATE = 08001
這是我的PHP代碼:
<?php
$database = 'xxxx';
$user = 'xxxx';
$password = 'xxxx';
$hostname = '10.10.100.5';
$port = '55000';
$driver = 'DB2';
$conn_string = "DRIVER={$driver};DATABASE=$database;HOSTNAME=$hostname;PORT=$port;PROTOCOL=TCPIP;UID=$user;PWD=$password;";
if (!$db = odbc_connect ($conn_string, $user, $password)) {
print("Execution failed:\n");
}
else echo 'Success!';
odbc_close($db);
請幫幫我!!
我不熟悉AS400,但是在Linux / UNIX上,如果未在服務器端正確設置TCP / IP通信,則會發生此錯誤。 我要檢查兩件事(在Linux / UNIX服務器上,不確定AS400等效項):
netstat -na
db2set DB2COMM=TCPIP
第一個命令將返回打開的TCP / IP偵聽器的列表。 您的端口55000應該在列表上。 如果不是,則表示服務器未打開以進行通信。
第二部分啟用DB2中的TCP / IP通信。 注意,存在對/etc/services
和SVCENAME
DBM CFG參數的依賴性。 必須重新啟動服務器, DB2COMM
才能生效。 正確啟用后,DB2應該開始在配置的端口上偵聽。
如果以上方法均無濟於事,則可能是防火牆阻止了對DB2服務器的訪問。
再次致歉,如果此回復不適用於AS400。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.