Apabila bekerja dengan pangkalan data SQLite3 dalam Go, pengguna mungkin menghadapi ralat "pangkalan data dikunci". Ralat ini mencadangkan kehadiran berbilang urutan serentak yang cuba mengakses fail pangkalan data yang sama.
Untuk menyelesaikan isu ini, pastikan hanya satu sambungan ke pangkalan data dikekalkan dalam program anda. Walaupun menutup hasil pertanyaan adalah penting, adalah penting juga untuk mempertimbangkan penciptaan berbilang pemegang fail pangkalan data.
Coretan kod berikut menunjukkan masalah:
func main() { database, tx, err := getDatabaseHandle() if err != nil { log.Fatal(err) } defer database.Close() dosomething(database, tx) } func dosomething(database *sql.DB, tx *sql.Tx) error { rows, err := database.Query("select * from sometable where name=?", "some") if err != nil { return err } defer rows.Close() // Deferring the rows.Close() helps resolve the issue if rows.Next() { ... } rows.Close() //some insert queries tx.Commit() }
Perhatikan penambahan baris tangguh. Close() dalam fungsi dosomething. Ini memastikan bahawa pemegang fail pangkalan data dikeluarkan dengan segera, menghalang penciptaan berbilang pemegang.
Dengan mengikuti pendekatan ini, anda boleh mengurus sambungan pangkalan data SQLite3 dengan berkesan dalam Go dan mengelakkan ralat "pangkalan data dikunci".
Atas ialah kandungan terperinci Bagaimana untuk Mengelakkan Ralat 'Pangkalan Data Dikunci' dalam SQLite3 Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!