Postgres で pq.Error による「データベースが存在しません」エラーを処理する方法?

Linda Hamilton
リリース: 2024-11-03 07:33:02
オリジナル
492 人が閲覧しました

How to Handle

db.Exec() 後の Postgres のエラー コード

db.Exec() を使用してクエリを実行すると、返されるエラーは次のようなものになる可能性があります。オペレーションのステータスに関する貴重な情報。実際のエラー メッセージは異なる場合がありますが、Postgres ドライバーは、特定の条件のエラー コードを検査する方法を提供します。

エラー コードへのアクセス

エラー コードにアクセスするには、 db.Exec() によって返されたエラーの場合は、それを *pq.Error 型にアサートしてから、その Code フィールドを使用できます。以下に例を示します。

<code class="go">if err, ok := err.(*pq.Error); ok {
    fmt.Println("Error code:", err.Code)
}</code>
ログイン後にコピー

「データベースが存在しません」のエラー コード

残念ながら、Postgres は「データベースが存在しない」というエラー コードを提供していません。 「エラー。エラーのコード フィールドは「42P01」 (「構文エラー」の場合) に設定される可能性がありますが、これは保証されません。

特定のエラー コードの確認

「データベースが存在しません」エラーに対する特定のエラー コードはないため、エラー メッセージ文字列を自分で手動で解析する必要があります。 strings パッケージを使用すると、これを効果的に行うことができます。

<code class="go">if strings.Contains(err.Error(), "existence") && strings.Contains(err.Error(), "database") {
    // Database does not exist
}</code>
ログイン後にコピー

追加のエラー フィールド

エラー コードに加えて、pq.Error タイプは他のフィールドを提供します。次のような貴重なコンテキストを提供できます。

  • Message: エラー メッセージ文字列
  • Detail: エラーに関する詳細情報
  • Hint: 解決方法に関するヒントエラーを解決します
  • 位置: 入力クエリ内でエラーが発生した位置
  • 場所: クエリ内のエラーの原因

以上がPostgres で pq.Error による「データベースが存在しません」エラーを処理する方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート