이 문서는 지원되지 않는 버전의 PostgreSQL 용입니다.
당신은에 대해 같은 페이지를 볼 수 있습니다현재버전 또는 위에 나열된 다른 지원 버전 중 하나입니다.

사용 젠 토토EGPC

이 섹션은 사용 젠 토토에 대해 설명합니다EGPC도구.

사전 처리기

사전 처리기가라고합니다.ECPG. 설치 후에 있습니다.Postgres bin/디렉토리.

도서관

theECPG라이브러리는입니다.libecpg.a또는libecpg.so. 또한 라이브러리는를 젠 토토합니다.libpq커뮤니케이션을위한 도서관Postgres서버를 통해 프로그램을 연결하려면-LECPG -LPQ.

라이브러리에는 "숨겨진"젠 토토이 있지만 언젠가는 매우 유용하다는 것을 증명합니다.

  • ecpgdebug (inton, 파일 *스트림)디버그 로깅을 켭니다 첫 번째 인수가 0이 아닌 것으로 호출되었습니다. 디버그 로깅이 완료되었습니다 에스트림. 최대SQL명령문은 인수를 기록합니다 결과.

    가장 중요한 것 (ecpgdo) 그것은 모두가 불려집니다SQL제외한 진술Exec SQL Commit, Exec SQL 롤백, Exec SQL Connect확장 된 문자열을 모두 로그, 즉, 모든 입력 변수가 삽입 된 문자열과 결과 결과Postgres서버. 이것은 오류를 검색 할 때 매우 유용 할 수 있습니다. 당신의SQL진술.

  • ecpgstatus ()이 메소드가 반환됩니다 우리가 데이터베이스에 연결되어 있고 그렇지 않은 경우 false..

오류 손질

에서 오류를 감지 할 수 있으려면Postgres서버와 같은 줄 포함

exec sql 포함 sqlca;
파일의 포함 섹션에서. 이것은 a를 정의합니다 구조 및 이름이있는 변수SQLCA다음과 같이 :
struct sqlca 
    int sqlcode;
    구조 
        int sqlerrml;
        char sqlerrmc [1000];
     sqlerrm;
 sqlca;

마지막에서 오류가 발생한 경우SQL성명서sqlca.sqlcode0이 아닌. 만약에sqlca.sqlcode는 적습니다 그 다음 0은 데이터베이스와 같은 일종의 심각한 오류입니다. 정의는 주어진 쿼리와 일치하지 않습니다. 0보다 큰 경우 그런 다음 테이블에 포함되지 않은 것처럼 이것은 정상 오류입니다. 요청 된 행.

SQLCA.SQLERRM.SQLERRMC는 다음을 설명하는 문자열을 포함합니다 오류. 문자열은 "23 행"으로 끝납니다. 라인이 라인 인 곳 소스 파일의 숫자 (실제로 사전 처리기이지만 이것을 라인 번호로 고칠 수 있기를 바랍니다. 입력 파일)

발생할 수있는 오류 목록 :

-1, 라인에서 지원되지 않는 유형 %s %d.

일반적으로 발생하지 않습니다. 이것은 사전 처리기는 라이브러리가하지 않는 것을 생성했습니다 알고 있습니다. 아마도 당신은 호환되지 않는 버전을 실행하고있을 것입니다 전처리 자와 도서관.

-1, 너무 많은 인수 라인 d.

사전 처리기가 위로 올라와 잘못된 일부를 생성했습니다 암호.

-1, 너무 적은 인수 라인 d.

사전 처리기가 위로 올라가서 잘못 만들었습니다 암호.

-1, 오류 시작 트랜잭션 라인 %d.

Postgres우리에게 신호를 보냈습니다 우리는 연결을 열 수 없다는 것입니다.

-1, Postgres 오류 : %s line %d.

일부Postgres오류. 그만큼 메시지는의 오류 메시지가 포함됩니다.Postgres백엔드.

1, 데이터를 찾을 수 없음 line %d.

이것은 당신이 무엇인지 알려주는 "정상적인"오류입니다. 질문을 찾을 수 없거나 커서를 통과했습니다.

-1, 많은 일치 라인 d.

이것은 쿼리가 여러 줄을 반환했음을 의미합니다. 그만큼select당신은 아마 그렇지 않았을 것입니다 고유한.

-1, 올바르게 형식화되지 않은 int 유형 : %s line %d.

이것은 호스트 변수가 an이라는 것을 의미합니다int타입 및 필드Postgres데이터베이스는 다른 유형이며 로 해석 할 수없는 값을 포함합니다int. 라이브러리 젠 토토strtol이 변환의 경우

-1, 서명되지 않은 유형을 올바르게 형식화하지 않음 : %s line %d.

이것은 호스트 변수가 an임을 의미합니다.서명되지 않은 int타입 및 필드Postgres데이터베이스입니다 다른 유형 및 해석 할 수없는 값을 포함합니다.부호없는 int. 라이브러리 젠 토토strtoul이 변환의 경우

-1, 올바르게 형식화되지 않은 부동 소수점 유형 : %s 라인 %디.

이것은 호스트 변수가 an이라는 것을 의미합니다float타입 및 필드Postgres데이터베이스는 다른 유형이며 로 해석 할 수없는 값을 포함합니다float. 라이브러리 젠 토토strtod이 변환의 경우

-1, 너무 적은 인수 라인 d.

이것은를 의미합니다.Postgres일치 변수가있는 것보다 더 많은 레코드를 반환했습니다. 아마도 당신은 몇 개의 호스트 변수를 잊어 버렸을 것입니다. 그만큼in : var1, : var2-list.

-1, 너무 많은 인수 라인 d.

이것은를 의미합니다.Postgres호스트 변수가있는 것보다 레코드가 적습니다. 아마도 당신은의 많은 호스트 변수가 필요합니다.로 : var1, : var2-list.

-1, 빈 쿼리 라인 %d.

Postgres반환 pgres_empty_query.

-1, 오류 : %s line %d.

이것은를 의미합니다.Postgres오류로 반환 pgres_nonfatal_error, pgres_fatal_error 또는 pgres_bad_response. 어느 것이 그리고 왜 메시지에서 설명.

-1, Postgres 오류 줄 %d.

Postgres무언가를 반환합니다 도서관은 처리 방법을 모릅니다. 이것은 아마도입니다 의 버전이기 때문에Postgres의 버전과 일치하지 않습니다ECPG도서관.

-1, 오류 커밋 라인 %d.

오류 중커밋. Exec SQL Commit로 번역됩니다ENDOperation inPostgres그리고 그것은 그 작업입니다 수행 할 수 없습니다.

-1, 오류 롤백 라인 %d.

오류 중롤백. Exec SQL 롤백abortOperation inPostgres그리고 그것은 그 작업입니다 수행 할 수 없습니다.

-1, ecpgconnect : 데이터베이스를 열 수 없음 %s.

데이터베이스에 대한 연결이 작동하지 않았습니다.