Maison > développement back-end > Golang > Comment réparer « Erreur SQLite3 : la base de données est verrouillée » dans Go ?

Comment réparer « Erreur SQLite3 : la base de données est verrouillée » dans Go ?

Mary-Kate Olsen
Libérer: 2024-12-20 21:47:11
original
487 Les gens l'ont consulté

How to Fix

"Erreur SQLite3 : la base de données est verrouillée" dans Go

Lorsque vous travaillez avec des bases de données SQLite3 dans Go, vous pouvez rencontrer l'erreur "la base de données est fermé." Cette erreur indique généralement que plusieurs threads tentent d'accéder simultanément au même fichier de base de données.

Pour résoudre ce problème, il est crucial de vous assurer que vous gérez correctement les connexions à la base de données. Évitez de créer plusieurs connexions simultanées à la base de données. Au lieu de cela, établissez une seule connexion et réutilisez-la pour toutes les requêtes et opérations.

De plus, après avoir exécuté une requête, n'oubliez pas de fermer l'objet résultat correspondant. Cela libère des ressources et empêche l’accumulation de descripteurs de fichiers de base de données inutiles. Négliger de fermer les objets de résultat peut entraîner la création de plusieurs descripteurs de fichiers de base de données, conduisant à l'erreur « La base de données est verrouillée ».

Voici un extrait de code révisé qui résout le problème en différant la fermeture de l'objet de résultat :

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()
}
Copier après la connexion

En différant la fermeture de l'objet résultat (defer rows.Close()), on s'assure qu'il est bien fermé même en cas d'erreur se produit lors de l’exécution de la requête. Cela permet d'éviter les fuites de ressources et garantit une bonne gestion de la base de données.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal