"Ralat Sqlite3: Pangkalan Data Dikunci" dalam Go
Apabila bekerja dengan pangkalan data SQLite3 dalam Go, anda mungkin menghadapi ralat "database is terkunci." Ralat ini biasanya menunjukkan bahawa berbilang urutan cuba mengakses fail pangkalan data yang sama secara serentak.
Untuk menyelesaikan isu ini, adalah penting untuk memastikan anda mengendalikan sambungan pangkalan data dengan betul. Elakkan membuat berbilang sambungan serentak ke pangkalan data. Sebaliknya, wujudkan satu sambungan dan gunakan semula untuk semua pertanyaan dan operasi.
Selain itu, selepas melaksanakan pertanyaan, sentiasa ingat untuk menutup objek hasil yang sepadan. Ini mengeluarkan sumber dan menghalang pemegang fail pangkalan data yang tidak perlu daripada terkumpul. Mengabaikan menutup objek hasil boleh mengakibatkan penciptaan berbilang pemegang fail pangkalan data, yang membawa kepada ralat "pangkalan data dikunci".
Berikut ialah coretan kod yang disemak yang menangani isu dengan menangguhkan penutupan objek hasil:
func main() { database, tx, err := getDatabaseHandle() if err != nil { log.Fatal(err) } defer database.Close() rows, err := database.Query("select * from sometable where name=?", "some") if err != nil { return err } defer rows.Close() // Defer closing the result object if rows.Next() { ... } //some insert queries tx.Commit() }
Dengan menangguhkan penutupan objek hasil (tunda baris. Tutup()), kami memastikan bahawa ia ditutup dengan betul walaupun ralat berlaku semasa pelaksanaan pertanyaan. Ini membantu mengelakkan kebocoran sumber dan memastikan pengendalian pangkalan data yang betul.
Atas ialah kandungan terperinci Bagaimana untuk Membetulkan 'Ralat Sqlite3: Pangkalan Data Dikunci' dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!