이 섹션은 사용 젠 토토에 대해 설명합니다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 행"으로 끝납니다. 라인이 라인 인 곳 소스 파일의 숫자 (실제로 사전 처리기이지만 이것을 라인 번호로 고칠 수 있기를 바랍니다. 입력 파일)
발생할 수있는 오류 목록 :
일반적으로 발생하지 않습니다. 이것은 사전 처리기는 라이브러리가하지 않는 것을 생성했습니다 알고 있습니다. 아마도 당신은 호환되지 않는 버전을 실행하고있을 것입니다 전처리 자와 도서관.
사전 처리기가 위로 올라와 잘못된 일부를 생성했습니다 암호.
사전 처리기가 위로 올라가서 잘못 만들었습니다 암호.
Postgres우리에게 신호를 보냈습니다 우리는 연결을 열 수 없다는 것입니다.
일부Postgres오류. 그만큼 메시지는의 오류 메시지가 포함됩니다.Postgres백엔드.
이것은 당신이 무엇인지 알려주는 "정상적인"오류입니다. 질문을 찾을 수 없거나 커서를 통과했습니다.
이것은 쿼리가 여러 줄을 반환했음을 의미합니다. 그만큼select당신은 아마 그렇지 않았을 것입니다 고유한.
이것은 호스트 변수가 an이라는 것을 의미합니다int타입 및 필드Postgres데이터베이스는 다른 유형이며 로 해석 할 수없는 값을 포함합니다int. 라이브러리 젠 토토strtol이 변환의 경우
이것은 호스트 변수가 an임을 의미합니다.서명되지 않은 int타입 및 필드Postgres데이터베이스입니다 다른 유형 및 해석 할 수없는 값을 포함합니다.부호없는 int. 라이브러리 젠 토토strtoul이 변환의 경우
이것은 호스트 변수가 an이라는 것을 의미합니다float타입 및 필드Postgres데이터베이스는 다른 유형이며 로 해석 할 수없는 값을 포함합니다float. 라이브러리 젠 토토strtod이 변환의 경우
이것은를 의미합니다.Postgres일치 변수가있는 것보다 더 많은 레코드를 반환했습니다. 아마도 당신은 몇 개의 호스트 변수를 잊어 버렸을 것입니다. 그만큼in : var1, : var2-list.
이것은를 의미합니다.Postgres호스트 변수가있는 것보다 레코드가 적습니다. 아마도 당신은의 많은 호스트 변수가 필요합니다.로 : var1, : var2-list.
Postgres반환 pgres_empty_query.
이것은를 의미합니다.Postgres오류로 반환 pgres_nonfatal_error, pgres_fatal_error 또는 pgres_bad_response. 어느 것이 그리고 왜 메시지에서 설명.
Postgres무언가를 반환합니다 도서관은 처리 방법을 모릅니다. 이것은 아마도입니다 의 버전이기 때문에Postgres의 버전과 일치하지 않습니다ECPG도서관.
오류 중커밋. Exec SQL Commit로 번역됩니다ENDOperation inPostgres그리고 그것은 그 작업입니다 수행 할 수 없습니다.
오류 중롤백. Exec SQL 롤백abortOperation inPostgres그리고 그것은 그 작업입니다 수행 할 수 없습니다.
데이터베이스에 대한 연결이 작동하지 않았습니다.