이 문서는 지원되지 않는 버전의 PostgreSQL을위한 것입니다.
당신은에 대해 같은 페이지를 보려고 할 수 있습니다PostgreSQL : 문서 : 17 : 54.2. 서버 내보고 무지개 토토버전 또는 위에 나열된 다른 지원 버전 중 하나가 대신.

55.2.서버 내보고 스포츠 토토 베트맨#

서버 코드 내에서 생성 된 스포츠 토토 베트맨, 경고 및 로그 메시지를 사용하여 생성해야합니다EREPORT또는 그 오래된 사촌elog. 이 기능의 사용은 설명을 요구할 정도로 복잡합니다.

모든 메시지에 필요한 요소는 두 가지 있습니다 : 심각도 수준 (범위디버그topanic, 정의src/include/utils/elog.h) 및 기본 메시지 텍스트. 또한 옵션 요소가 있으며, 그 중 가장 일반적인 요소는 SQL Spec의 SQLState 규칙을 따르는 스포츠 토토 베트맨 식별자 코드입니다.Ereport자체는 메시지 생성을 C 소스 코드의 단일 함수 호출처럼 보이게하는 구문 편의를위한 주로 존재하는 쉘 매크로입니다. 에 의해 직접 허용되는 유일한 매개 변수Ereport는 심각도 수준입니다. 기본 메시지 텍스트와 옵션 메시지 요소는와 같은 보조 함수를 호출하여 생성됩니다.errmsg, 내에서Ereport전화.

전형적인 호출Ereport다음과 같이 보일 수 있습니다 :

Ereport (스포츠 토토 베트맨,

이것은 스포츠 토토 베트맨 심각도 수준을 지정합니다스포츠 토토 베트맨(실행 스포츠 토토 베트맨). 그만큼errcodeCall에 정의 된 매크로를 사용하여 SQLSTATE 스포츠 토토 베트맨 코드를 지정합니다src/include/utils/errcodes.h. 그만큼errmsgCall은 기본 메시지 텍스트를 제공합니다.

보조 기능 호출을 둘러싼 여분의 괄호가있는이 오래된 스타일도 자주 보게됩니다.

Ereport (스포츠 토토 베트맨,

추가 괄호는 전에 필요했습니다PostgreSQL버전 12이지만 이제 선택 사항입니다.

여기 더 복잡한 예가 있습니다 :

Ereport (스포츠 토토 베트맨,

이것은 런타임 값을 메시지 텍스트에 포함시키기 위해 형식 코드를 사용하는 것을 보여줍니다. 또한 선택 사항힌트메시지가 제공됩니다. 보조 기능 호출은 어떤 순서로든 작성할 수 있지만 일반적으로errcodeanderrmsg먼저 나타납니다.

심각도 레벨이스포츠 토토 베트맨이상,Ereport현재 쿼리의 실행을 중단하고 발신자에게 돌아 가지 않습니다. 심각도 수준이보다 낮 으면스포츠 토토 베트맨,Ereport정상적으로 반환합니다.

사용 가능한 보조 루틴Ereportare :

  • errcode (sqlerrcode)조건에 대한 sqlstate 스포츠 토토 베트맨 식별자 코드를 지정합니다. 이 루틴이 호출되지 않으면 스포츠 토토 베트맨 식별자가 기본값으로errcode_internal_error스포츠 토토 베트맨 심각도 레벨이있는 ​​경우스포츠 토토 베트맨이상,errcode_warning스포츠 토토 베트맨 레벨이있는 ​​경우경고, 그렇지 않으면 (for통지아래)errcode_successful_completion. 이러한 기본값은 종종 편리하지만 항상 생략하기 전에 적절한 지 생각하십시오.errcode ()전화.

  • errmsg (const char *msg, ...)기본 스포츠 토토 베트맨 메시지 텍스트를 지정하고 실행 시간 값을 삽입 할 수 있습니다. 삽입은에 의해 지정됩니다.Sprintf-스타일 형식 코드. 에 의해 허용되는 표준 형식 코드 외에Sprintf, 형식 코드%m|Strerror현재 값의 경우errno.[18] %m매개 변수 목록에 해당 항목이 필요하지 않습니다.errmsg. 메시지 문자열이 실행됩니다getText형식 코드가 처리되기 전에 가능한 현지화.

  • errmsg_internal (const char *msg, ...)|errmsg, 메시지 문자열이 국제화 메시지 사전에 번역되거나 포함되지 않는 것을 제외하고. 이것은에 사용되어야합니다.일어날 수 없습니다아마도 번역 노력을 소비 할 가치가없는 경우.

  • errmsg_plural (const char *fmt_singular, const char *fmt_plural, unsigned long n, ...)errmsg, 그러나 다양한 복수 형태의 메시지를 지원합니다.fmt_singularEnglish Singular 형식,fmt_plural영어 복수 형식,n필요한 복수 양식을 결정하는 정수 값이며 나머지 인수는 선택한 형식 문자열에 따라 형식화됩니다. 자세한 내용은 참조섹션 56.2.2.

  • errdetail (const char *msg, ...)선택 사항을 제공세부 사항메시지; 이것은 기본 메시지에 부적절한 것으로 보이는 추가 정보가있을 때 사용됩니다.errmsg.

  • errdetail_internal (const char *msg, ...)|errdetail, 메시지 문자열이 국제화 메시지 사전에 번역되거나 포함되지 않는다는 점을 제외하고. 예를 들어 대부분의 사용자에게 유용하기에는 너무 기술적이기 때문에 번역 노력을 소비 할 가치가없는 세부 메시지에 사용해야합니다.

  • errdetail_plural (const char *fmt_singular, const char *fmt_plural, unsigned long n, ...)errdetail, 그러나 다양한 복수 형태의 메시지를 지원합니다. 자세한 내용은 참조섹션 56.2.2.

  • errdetail_log (const char *msg, ...)|errdetail이 문자열은 서버 로그에만 사용되며 클라이언트에 절대 절대 없습니다. 둘 다errdetail(또는 위에 해당하는 것 중 하나) 및errdetail_log사용됩니다. 그러면 하나의 문자열이 클라이언트에게, 다른 문자열은 로그로 이동합니다. 이것은 너무 보안에 민감하거나 너무 부피가 큰 스포츠 토토 베트맨 세부 정보에 유용합니다.

  • errdetail_log_plural (const char *fmt_singular, const char *fmt_plural, unsigned long n, ...)errdetail_log, 그러나 다양한 복수 형태의 메시지를 지원합니다. 자세한 내용은 참조섹션 56.2.2.

  • errhint (const char *msg, ...)선택 사항을 제공힌트메시지; 이것은 무엇이 잘못되었는지에 대한 사실적인 세부 사항과 달리 문제를 해결하는 방법에 대한 제안을 제공 할 때 사용됩니다.errmsg.

  • errhint_plural (const char *fmt_singular, const char *fmt_plural, unsigned long n, ...)같아errhint, 그러나 다양한 복수 형태의 메시지를 지원합니다. 자세한 내용은 참조섹션 56.2.2.

  • errcontext (const char *msg, ...)일반적으로 직접 호출되지 않습니다EREPORT메시지 사이트; 오히려 그것은에서 사용됩니다.ERROR_CONTEXT_STACK콜백 함수 PL 함수의 현재 위치와 같은 스포츠 토토 베트맨가 발생한 컨텍스트에 대한 정보를 제공합니다. 메시지 문자열은와 같은 방식으로 처리됩니다.errmsg. 다른 보조 함수와 달리, 이것은 당시 두 번 이상 호출 될 수 있습니다Ereport전화; 이렇게 제공되는 연속적인 줄은 신형 분리와 관련이 있습니다.

  • 스포츠 토토 베트맨 (int cursorpos)쿼리 문자열 내에서 스포츠 토토 베트맨의 텍스트 위치를 지정합니다. 현재 쿼리 처리의 어휘 및 구문 분석 단계에서 감지 된 스포츠 토토 베트맨에만 유용합니다.

  • errtable (관계 rel)스포츠 토토 베트맨 보고서에서 이름과 스키마 이름이 보조 필드로 포함되어야하는 관계를 지정합니다.

  • errtablecol (관계 Rel, int attnum)스포츠 토토 베트맨 보고서에 이름, 테이블 이름 및 스키마 이름이 보조 필드로 포함되어야하는 열을 지정합니다.

  • errtableconstraint (관계 rel, const char *conname)스포츠 토토 베트맨 보고서에 이름, 테이블 이름 및 스키마 이름이 보조 필드로 포함되어야하는 테이블 제약 조건을 지정합니다. 인덱스는 관련이 있는지 여부에 관계 없이이 목적에 대한 제약으로 간주되어야합니다pg_constraint입력. 색인 자체가 아닌 기본 힙 관계를 통과하도록주의하십시오.Rel.

  • errdatatype (OID DataTypeoid)스포츠 토토 베트맨 보고서에 이름과 스키마 이름이 보조 필드로 포함되어야하는 데이터 유형을 지정합니다.

  • errdomainconstraint (OID DataTypeoid, const char *conname)스포츠 토토 베트맨 보고서에 이름, 도메인 이름 및 스키마 이름이 보조 필드로 포함되어야하는 도메인 제약 조건을 지정합니다.

  • errcode_for_file_access ()는 파일 액세스 관련 시스템 호출의 고장에 대한 적절한 SQLState 스포츠 토토 베트맨 식별자를 선택하는 편의 기능입니다. 저장된 것을 사용합니다errno생성 할 스포츠 토토 베트맨 코드를 결정합니다. 일반적으로 이것은와 함께 사용해야합니다.%m기본 스포츠 토토 베트맨 메시지 텍스트에서

  • errcode_for_socket_access ()소켓 관련 시스템 호출에서 실패에 대한 적절한 SQLState 스포츠 토토 베트맨 식별자를 선택하는 편의 기능입니다.

  • errhidestmt (bool hide_stmt)|진술 :우체국 마스터 로그의 메시지 부분. 일반적으로 이것은 메시지 텍스트에 이미 현재 진술이 포함 된 경우 적절합니다.

  • errhidecontext (bool hide_ctx)를 지정하기 위해 호출 될 수 있습니다컨텍스트 :우체국 마스터 로그의 메시지 부분. 이것은 컨텍스트의 반복적 인 포함이 로그를 너무 많이 부풀릴 수있는 장점 디버깅 메시지에만 사용해야합니다.

note

최대 기능 중 하나errtable,errtablecol,errtableconstraint,errdatatype또는errdomainconstraint에서 사용해야합니다Ereport전화. 이러한 기능은 응용 프로그램이 잠재적으로 국소화 된 스포츠 토토 베트맨 메시지 텍스트를 검사하지 않고 스포츠 토토 베트맨 조건과 관련된 데이터베이스 객체의 이름을 추출 할 수 있도록 존재합니다.PostgreSQL9.3, SQLSTATE 클래스 23 (무결성 제약 조건 위반)의 스포츠 토토 베트맨에 대해서만 완전한 적용 범위가 존재하지만 향후 확장 될 가능성이 높습니다.

오래된 기능이 있습니다elog여전히 많이 사용됩니다.elog전화 :

elog (레벨, "형식 문자열", ...);

정확히 다음과 같습니다.

Ereport (레벨, errmsg_internal ( "format string", ...));

SQLSTATE 스포츠 토토 베트맨 코드는 항상 기본값이 표시되고 메시지 문자열은 번역이 적용되지 않습니다. 그러므로,elog내부 스포츠 토토 베트맨 및 저수준 디버그 로깅에만 사용해야합니다. 일반 사용자에게 관심이있는 모든 메시지는EREPORT. 그럼에도 불구하고 충분한 내부가 있습니다일어날 수 없습니다시스템의 스포츠 토토 베트맨 확인elog여전히 널리 사용됩니다. 표기법 단순성에 대한 메시지가 선호됩니다.

좋은 스포츠 토토 베트맨 메시지 작성에 대한 조언섹션 55.3.



[18]Ereport전화에 도달했습니다. 의 변화errno보조보고 루틴 내에서는 영향을 미치지 않습니다. 글을 쓰면 사실이 아닐 것입니다strerror (errno)명시 적으로errmsg의 매개 변수 목록; 따라서 그렇게하지 마십시오.