>  기사  >  백엔드 개발  >  Postgres 드라이버에서 \"데이터베이스가 존재하지 않습니다\" 오류를 식별하는 방법은 무엇입니까?

Postgres 드라이버에서 \"데이터베이스가 존재하지 않습니다\" 오류를 식별하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-02 17:03:29999검색

How to Identify

db.Exec(...)에서 반환된 오류 코드 확인

Postgres를 사용하여 데이터베이스를 삭제하는 중 드라이버(lib/pq)에서는 일반 오류와 "데이터베이스가 존재하지 않습니다" 오류를 구별하려고 시도합니다. 이를 달성하려면 다음과 같은 질문이 제기됩니다.

반환된 오류가 데이터베이스가 존재하지 않음을 나타내는지, 아니면 오류 문자열을 수동으로 구문 분석해야 하는지 식별하는 데 사용할 수 있는 상수 변수 또는 메커니즘이 있습니까?

Postgres 문서에는 "데이터베이스가 존재하지 않습니다" 오류 코드에 대한 구체적인 언급이 없지만 lib/pq 패키지는 자세한 오류 정보를 제공하는 다양한 필드가 있는 구조체인 *pq.Error 유형의 오류를 반환합니다.

오류 코드를 확인하고 원하는 조건부 작업을 수행하려면 다음과 같이 진행하세요.

<code class="go">if err, ok := err.(*pq.Error); ok {
  // Here err is of type *pq.Error, you may inspect all its fields, e.g.:
  fmt.Println("pq error:", err.Code.Name())
}</code>

*pq.Error 구조체에는 다음 필드가 포함되어 있으며 각 필드에는 Postres 관련 정보와 값이 포함되어 있습니다.

<code class="go">type Error struct {
    Severity         string
    Code             ErrorCode
    Message          string
    Detail           string
    Hint             string
    Position         string
    InternalPosition string
    InternalQuery    string
    Where            string
    Schema           string
    Table            string
    Column           string
    DataTypeName     string
    Constraint       string
    File             string
    Line             string
    Routine          string
}</code>

이러한 필드의 의미와 가능한 값의 전체 목록은 Postgres 설명서의 오류 및 알림 메시지 필드에서 확인할 수 있습니다.

이러한 필드를 활용하면 데이터베이스 작업을 위해 Postgres 드라이버를 사용할 때 원하는 오류 조건을 처리합니다.

위 내용은 Postgres 드라이버에서 \"데이터베이스가 존재하지 않습니다\" 오류를 식별하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.