首頁  >  文章  >  後端開發  >  如何使用 Postgres 驅動程式區分一般錯誤和特定條件(例如「資料庫不存在」錯誤)?

如何使用 Postgres 驅動程式區分一般錯誤和特定條件(例如「資料庫不存在」錯誤)?

Patricia Arquette
Patricia Arquette原創
2024-11-03 02:50:03331瀏覽

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 結構還提​​供其他有用的信息字段,包括:

  • 訊息:人類可讀的錯誤訊息。其他詳細資訊。
  • 透過利用這些字段,開發者可以更深入地了解在執行過程中遇到的錯誤。

以上是如何使用 Postgres 驅動程式區分一般錯誤和特定條件(例如「資料庫不存在」錯誤)?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn