Linux 용 DB2 Express-C V9.7, unixODBC php5-odbc 및 iSerie-5.4.0-1.6 드라이버를 설치했지만 연결할 때 DB2 서버가 저에게이 메시지를 반환 PHP에 :PHP 5.3.6-13ubuntu3.6이있는 DB2 인스턴스에 ODBC 연결에 실패했습니다
[unixODBC][IBM][iSeries Access ODBC Driver]Communication link failure. comm rc=10061 -
CWBCO1049 - The iSeries server application is not started, SQL state 08004 in SQLConnect
나는 나를 포트 50000
을 듣고 DB2에게 -anp 50000
에서 netstat 대신 포트 8741에 연결을 시도 PHP tcpdump와 함께 발견 이것은 내 구성 파일입니다
/etc/odbcinst.ini :
[DB2]
Description = ODBC for DB2
Driver = /opt/ibm/iSeriesAccess/lib/libcwbodbc.so
Setup = /opt/ibm/iSeriesAccess/lib/libcwbodbcs.so
FileUsage = 1
Threading = 2
DontDLClose = 1
UsageCount = 1
/etc/odbc.ini
[local_db2]
Driver = DB2
System = localhost
User = db2inst1
Password = MySecretPassword
Port = 50000
Database = dbname
Option = 1
그리고 내 PHP 스크립트 :
$dsn = "local_db2";
$user = "db2inst1";
$passwd = "MySecretPassword";
$conn = odbc_connect($dsn,$user,$passwd);
echo "votre id de connexion est : $conn";
if ($conn <= 0) {
echo "\nErreur\n";
}
else { echo "\nSuccès\n";
}
odbc_close($conn);
지금 내가 DB2에 연결할 수 있습니다 섬기는 사람./etc/services에서 db2inst1 포트를 변경했지만 서버가 응답하지 않습니다.
내 오류 메시지는 다음과 같습니다. [unixODBC] [IBM] [System i Access ODBC 드라이버] 통신 링크 장애입니다. 통신의 RC = 8405 - CWBCO1047 - IBM의 전 서버 응용 프로그램이는 SQLConnect에 연결, SQL 상태 08S01를 분리
결론 :
첫 번째 문제였다 내 구성에 적합한 드라이버 아니었다 iSeries 용 드라이버 내가 너무 linux 용 드라이버가 포함 된 DB2 ODBC CLI driver을 설치해야합니다.
두 번째 문제점은 ODBC 구성입니다.
내 작업 /etc/odbc.ini 구성 :
[DBNAME]
Driver=DB2
내 작업 /etc/odbcinst.ini 구성 :
[ODBC]
Trace = yes
Tracefile = /tmp/odbc.log
[DB2]
Description = DB2 Driver
Driver = /opt/ibm/db2/V9.7/lib32/libdb2.so
FileUsage = 1
DontDLClose = 1
당신은/tmp 디렉토리에 ODBC 연결에 대한 자세한 정보를 얻을 수 있습니다 /odbc.log. odbc 연결을 테스트 한 isql 프로그램을 사용했습니다. 이 프로그램은 unixodbc linux 패키지에 있습니다.
귀하의 정보를 보내 주셔서 감사합니다.
Nicolas.
저는 DB2와 newby입니다 만, 시스템에 wrkactjob 및 strhostsvr 유틸리티가 없습니다. OS/400 명령이라고 생각하지만 우분투 리눅스에서 DB2를 실행합니다. –
Linux에서 DB2를 실행 중인데 왜 iSeries Access DB2 드라이버를 사용하고 있습니까? [DB2 ODBC CLI driver] (http://www-01.ibm.com/support/docview.wss?uid=swg21418043)와 같은 표준 DB2 드라이버를 사용해야합니다. iSeries 드라이버는 DB2/400에 연결하기위한 것입니다. – jamesallman
이제 괜찮습니다. 정보를 보내 주셔서 감사합니다. –