Menentukan Kod Ralat yang Dikembalikan oleh db.Exec(...)
Dalam proses memadam pangkalan data menggunakan Postgres pemandu (lib/pq), percubaan dibuat untuk membezakan antara ralat biasa dan ralat "pangkalan data tidak wujud". Untuk mencapai matlamat ini, soalan berikut timbul:
Adakah terdapat pembolehubah atau mekanisme malar yang boleh digunakan untuk mengenal pasti sama ada ralat yang dikembalikan menunjukkan bahawa pangkalan data tidak wujud, atau adakah penghuraian manual rentetan ralat diperlukan?
Walaupun dokumentasi Postgres tidak menyebut secara khusus kod ralat "pangkalan data tidak wujud", pakej lib/pq mengembalikan ralat jenis *pq.Error, struct dengan pelbagai medan yang menyediakan maklumat ralat terperinci.
Untuk menyemak kod ralat dan melakukan tindakan bersyarat yang diingini, teruskan seperti berikut:
<code class="go">if err, ok := err.(*pq.Error); ok { // Here err is of type *pq.Error, you may inspect all its fields, e.g.: fmt.Println("pq error:", err.Code.Name()) }</code>
Struktur *pq.Error termasuk medan berikut, setiap satu mengandungi maklumat dan nilai khusus Postres:
<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>
Senarai penuh makna dan kemungkinan nilai untuk medan ini boleh didapati dalam dokumentasi Postgres di: Ralat dan Medan Mesej Notis.
Dengan menggunakan medan ini, adalah mungkin untuk mengenal pasti dengan tepat dan mengendalikan keadaan ralat yang diingini apabila menggunakan pemacu Postgres untuk operasi pangkalan data.
Atas ialah kandungan terperinci Bagaimana untuk Mengenalpasti Ralat 'Pangkalan Data Tidak Wujud' dengan Pemacu Postgres?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!