Bagaimana untuk Mengendalikan Ralat \'Pangkalan Data tidak wujud\' dengan pq.Error dalam Postgres?

Linda Hamilton
Lepaskan: 2024-11-03 07:33:02
asal
492 orang telah melayarinya

How to Handle

Kod Ralat dalam Postgres Selepas db.Exec()

Apabila melaksanakan pertanyaan menggunakan db.Exec(), ralat yang dikembalikan boleh memberikan maklumat berharga tentang status operasi. Walaupun mesej ralat sebenar mungkin berbeza-beza, pemandu Postgres menyediakan cara untuk memeriksa kod ralat untuk keadaan tertentu.

Mengakses Kod Ralat

Untuk mengakses kod ralat daripada ralat yang dikembalikan oleh db.Exec(), anda boleh menaip menegaskannya pada jenis *pq.Error dan kemudian gunakan medan Kodnya. Berikut ialah contoh:

<code class="go">if err, ok := err.(*pq.Error); ok {
    fmt.Println("Error code:", err.Code)
}</code>
Salin selepas log masuk

Kod Ralat untuk "Pangkalan Data tidak wujud"

Malangnya, Postgres tidak menyediakan kod ralat khusus untuk "pangkalan data tidak wujud "kesilapan. Medan Kod ralat mungkin akan ditetapkan kepada "42P01" (untuk "ralat sintaks"), tetapi ini tidak dijamin.

Menyemak Kod Ralat Tertentu

Memandangkan tiada kod ralat khusus untuk ralat "pangkalan data tidak wujud", anda perlu menghuraikan sendiri rentetan mesej ralat secara manual. Anda boleh menggunakan pakej rentetan untuk melakukan ini dengan berkesan:

<code class="go">if strings.Contains(err.Error(), "existence") && strings.Contains(err.Error(), "database") {
    // Database does not exist
}</code>
Salin selepas log masuk

Medan Ralat Tambahan

Selain kod ralat, jenis pq.Error menyediakan medan lain yang boleh memberikan konteks yang berharga, seperti:

  • Mesej: Rentetan mesej ralat
  • Perincian: Maklumat terperinci tentang ralat
  • Petunjuk: Petua tentang cara untuk selesaikan ralat
  • Kedudukan: Kedudukan dalam pertanyaan input tempat ralat berlaku
  • Di mana: Sumber ralat dalam pertanyaan

Atas ialah kandungan terperinci Bagaimana untuk Mengendalikan Ralat \'Pangkalan Data tidak wujud\' dengan pq.Error dalam Postgres?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan