嘗試使用db.Exec("DROP DATABASE dbName;" 刪除資料庫時)使用postgres驅動程式(lib/pq),有助於區分預期錯誤(例如「資料庫不存在」)和意外錯誤。
決定傳回的特定錯誤碼,需要檢查回傳的錯誤。 lib/pq 套件傳回 *pq.Error 類型的錯誤,它是一個結構體。此結構提供對詳細錯誤訊息的訪問,包括錯誤代碼。
<code class="go">if err, ok := err.(*pq.Error); ok { // Here err is of type *pq.Error and you can inspect its fields fmt.Println("pq error code:", err.Code.Name()) }</code>
*pq.Error 結構有多個欄位提供錯誤的資訊:
<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>
不幸的是,PostgreSQL 中沒有針對「資料庫不存在」錯誤的特定錯誤代碼。相反,您可能會遇到以下錯誤:
由於沒有專門的錯誤代碼,您可能需要手動解析錯誤訊息並檢查“資料庫不存在”或“未找到表或視圖”等關鍵字詞。
<code class="go">if strings.Contains(err.Message, "database does not exist") { // Handle database non-existence error }</code>
透過檢查 *pq.Error 欄位並手動解析錯誤訊息,您可以有效處理資料庫不存在錯誤並執行適當的條件操作。
以上是使用 PostgreSQL 驅動程式刪除資料庫時如何處理資料庫不存在錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!