2012-04-30 1 views
1

스키마를 정의하여 쿼리 sql을 만드는 테이블을 검색 할 수있는 라이브러리 목록을 설정하려고합니다. 나는이 문자열 연결 IBMi에 내 DB2에 연결할 수 momenti에서 odbc_connect set DefaultSchema

:

연결이 성공적으로 내가 리소스 ID # 3를 얻을 수 있지만, 설립
$user = 'USER'; 
$password = 'PWD'; 
$hostname = '192.168.1.100'; 
$db = 'S6528B5A'; 
$conn_string = "DRIVER={iSeries Access ODBC Driver}; 
       SYSTEM=$hostname; 
       PROTOCOL=TCPIP; 
       UID=$user; 
       PWD=$password; 
       DATABASE=$db; 
       DefaultSchema={LIB1,LIB2};"; 

난 SQL 쿼리를 실행하려고하면

(연결을 연 동일한 사용자 이름과 라이브러리에서 검색, 잘못된 라이브러리에있는 파일을 검색하는 것처럼)
$sql = 'SELECT * FROM FILE1'; 
$rows = odbc_exec($conn, $sql); 

나는 파일이 발견되지 않는 오류 SQL 상태 S0002를 얻을 수

첫 번째 연결에서 내 환경을 설정할 수있는 방법과 실행 쿼리보다?

답변

3

사용이 연결 문자열은 시스템 이름을 사용하도록하고 기본 라이브러리 설정하지 : 관련 부분의

$conn_string = "DRIVER={iSeries Access ODBC Driver}; 
    SYSTEM=$hostname; 
    PROTOCOL=TCPIP; 
    UID=$user; 
    PWD=$password; 
    Naming=1; 
    DefaultSchema=,LIB1,LIB2;"; 

Client Access ODBC: Default Libraries Setting

ODBC connection string keywords

발췌하면 다음과 같습니다

포함 SQL 명명 규칙에서 운영 체제는 라이브러리 목록 검색을 수행하여 규정되지 않은 오브젝트를 찾습니다. 기본 콜렉션이 정의되면, 디폴트 콜렉션이 규정되지 않은 SQL 문을 분석하는 데 사용됩니다.

... SYS 명명 규칙으로

는 규정되지 않은 SQL 문은 기본 모음으로 이동합니다. 기본 콜렉션이 없으면 현재 라이브러리가 사용됩니다. 현재 라이브러리가 지정되지 않으면 라이브러리리스트가 사용됩니다.

... 작업이 규정되지 않은 SQL 이름을 포함하는 SQL 문을 처리 할 때 사용되는 라이브러리를 결정 ODBC 설정 속성

기본 컬렉션입니다. 기본 콜렉션이 설정되면 프로 시저, 함수 및 유형을 제외한 모든 규정되지 않은 오브젝트는 이름 지정 규칙에 관계없이 기본 콜렉션에 있어야합니다.

...

어떻게 ODBC 라이브러리 목록을 검색 할 수 있습니까?

위에서 설명한대로 ODBC 데이터 원본을 편집하고 시스템 명명을 SYS로 설정하십시오. 기본 라이브러리가 비어 있거나 R510 이전 버전에서는 기본 라이브러리 설정이 쉼표로 시작되어 기본 콜렉션이 정의되지 않도록해야합니다 (예 : ", MYLIB1, MYLIB2").


Odbc connection string format, not finding files