Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Mengelakkan Ralat 'Pangkalan Data Dikunci' dalam SQLite3 Go?

Bagaimana untuk Mengelakkan Ralat 'Pangkalan Data Dikunci' dalam SQLite3 Go?

Barbara Streisand
Lepaskan: 2024-12-15 22:20:17
asal
332 orang telah melayarinya

How to Avoid the

Mengendalikan Ralat "Pangkalan Data Dikunci" dalam SQLite3 dengan Go

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()
}
Salin selepas log masuk

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!

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