Maison >développement back-end >Golang >Comment éviter l'erreur « La base de données est verrouillée » dans SQLite3 de Go ?
Lorsque vous travaillez avec des bases de données SQLite3 dans Go, les utilisateurs peuvent rencontrer l'erreur « La base de données est verrouillée ». Cette erreur suggère la présence de plusieurs threads simultanés tentant d'accéder au même fichier de base de données.
Pour résoudre ce problème, assurez-vous qu'une seule connexion à la base de données est maintenue dans votre programme. Bien que la fermeture des résultats de requête soit essentielle, il est également crucial d'envisager la création de plusieurs descripteurs de fichiers de base de données.
L'extrait de code suivant illustre le problème :
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() }
Notez l'ajout de lignes différées. Close() dans la fonction dosomething. Cela garantit que le handle du fichier de base de données est libéré rapidement, empêchant la création de plusieurs handles.
En suivant cette approche, vous pouvez gérer efficacement les connexions à la base de données SQLite3 dans Go et éviter l'erreur « La base de données est verrouillée ».
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!