>  기사  >  백엔드 개발  >  Postgres 드라이버를 사용하여 일반적인 오류와 \"데이터베이스가 존재하지 않습니다\" 오류와 같은 특정 조건을 어떻게 구별할 수 있습니까?

Postgres 드라이버를 사용하여 일반적인 오류와 \"데이터베이스가 존재하지 않습니다\" 오류와 같은 특정 조건을 어떻게 구별할 수 있습니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-03 02:50:03334검색

How can I differentiate between generic errors and specific conditions like

데이터베이스 작업에서 오류 코드 검색

Postgres 드라이버(lib/pq)를 사용하여 쿼리를 실행할 때 다음과 같은 것을 구별해야 하는 경우가 있습니다. 일반 오류 및 "데이터베이스가 존재하지 않습니다" 오류와 같은 특정 조건입니다. 이를 용이하게 하기 위해 Postgres 드라이버는 오류 세부 정보를 검사하기 위한 구조화된 접근 방식을 제공합니다.

오류 코드 액세스

db.Exec(...)에서 반환되는 오류는 다음과 같습니다. 오류를 설명하는 다양한 필드가 포함된 구조체인 *pq.Error를 입력하세요. 이러한 필드에 액세스하려면 다음 구문을 사용하십시오.

if err, ok := err.(*pq.Error); ok {
    // Inspect error fields, such as:
    fmt.Println("Error code:", err.Code.Name())
}

"데이터베이스가 존재하지 않음" 오류 식별

안타깝게도 "데이터베이스에 대한 전용 오류 코드는 없습니다. 존재하지 않습니다." 오류가 발생합니다. 대신, 보다 일반적인 "28003: 데이터베이스가 존재하지 않습니다" 오류에 해당합니다. 이 조건을 확인하려면 다음 코드를 사용하십시오.

if err, ok := err.(*pq.Error); ok {
    if err.Code.Name() == "28003" {
        // Database does not exist
    }
}

추가 필드

오류 코드 외에도 *pq.Error 구조체는 다른 유용한 정보를 제공합니다. 다음을 포함한 필드:

  • 메시지: 사람이 읽을 수 있는 오류 메시지.
  • 심각도: 오류의 심각도 "알림"에서 "치명적"으로.
  • 세부정보: 오류에 대한 추가 세부정보.
  • 힌트: 오류 해결 방법에 대한 제안 .
  • 위치: SQL 문에서 오류가 발생한 위치.

이러한 필드를 활용하면 개발자는 오류가 발생한 오류에 대해 더 깊이 이해할 수 있습니다. 데이터베이스 작업을 통해 더 많은 정보를 바탕으로 오류 처리 및 디버깅이 가능합니다.

위 내용은 Postgres 드라이버를 사용하여 일반적인 오류와 \"데이터베이스가 존재하지 않습니다\" 오류와 같은 특정 조건을 어떻게 구별할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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