editor php Yuzai kadangkala menghadapi ralat semasa menggunakan bahasa Go untuk sisipan SQL. Dalam kes ini, mengetahui butiran ralat adalah penting untuk mencari dan menyelesaikan masalah. Nasib baik, bahasa Go menyediakan cara mudah untuk mendapatkan butiran ralat sisipan SQL. Dengan menggunakan kaedah Stmt.Exec dalam pakej pangkalan data/sql, kita boleh mendapatkan objek ralat apabila ralat berlaku. Kemudian, kita boleh menggunakan kaedah Ralat antara muka ralat untuk mendapatkan butiran ralat. Kaedah ini boleh mengembalikan rentetan yang mengandungi penerangan khusus tentang ralat, membolehkan kami memahami dan menyelesaikan masalah dengan lebih baik.
Saya cuba memasukkan beberapa data ke dalam pangkalan data menggunakan go. Oleh kerana sifat data (eksport besar dari alat lain) saya kadang-kadang menghadapi beberapa batasan model.
Gunakan kod go berikut
_, err := db.exec(query, params...) if err != nil { log.print(err) }
Saya baru dapat output seperti ini
2023/03/10 09:40:26 pq: insert or update on table "table" violates foreign key constraint "table_constraint" exit status 1
Apabila saya melakukan sisipan yang sama dari pgadmin, saya mendapat ralat yang sama, tetapi juga beberapa maklumat terperinci.
DETAIL: Key (id)=(abc) is not present in table "table_2".
Adakah terdapat cara untuk mendapatkan maklumat detail ini? Saya menyemak dokumentasi tetapi tidak menemui apa-apa, tetapi mungkin ada caranya?
Biasanya, pemacu pangkalan data yang anda gunakan akan mempunyai jenis ralat tersuai. Anda boleh menukar medan err
值断言为此错误类型,然后根据驱动程序的实现,您应该能够收集有关该问题的更多详细信息。例如,当使用 github.com/lib/pq
时,可以断言 *pq.error
并阅读其 detail
kepada:
_, err := db.Exec(query, params...) if err != nil { if e, ok := err.(*pq.Error); ok { log.Print(e.Detail) } }
Atas ialah kandungan terperinci Bagaimana untuk mendapatkan butiran ralat sisipan SQL dilakukan dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!