2012-03-13 2 views
1

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.

답변

3

데이터베이스 호스트 서버가 시작되지 않았을 수 있습니다. 데이터베이스 호스트 서버는 데이터베이스에 대한 TCP/IP 연결을 허용합니다.

WRKACTJOB SBSD(QSERVER) JOB(QZDASRVSD) 명령으로 현재 활성화되어 있는지 확인할 수 있습니다.

시작 명령은 STRHOSTSVR SERVER(*DATABASE)입니다.

기본 포트는 8471입니다.

+0

저는 DB2와 newby입니다 만, 시스템에 wrkactjob 및 strhostsvr 유틸리티가 없습니다. OS/400 명령이라고 생각하지만 우분투 리눅스에서 DB2를 실행합니다. –

+1

Linux에서 DB2를 실행 중인데 왜 iSeries Access DB2 드라이버를 사용하고 있습니까? [DB2 ODBC CLI driver] (http://www-01.ibm.com/support/docview.wss?uid=swg21418043)와 같은 표준 DB2 드라이버를 사용해야합니다. iSeries 드라이버는 DB2/400에 연결하기위한 것입니다. – jamesallman

+0

이제 괜찮습니다. 정보를 보내 주셔서 감사합니다. –

관련 문제