124 votes

ErreurOpérationnelle : la base de données est verrouillée

J'ai fait des opérations répétitives dans mon application (le testant), et soudain je reçois une erreur bizarre :

OperationalError: database is locked

J'ai redémarré le serveur, mais l'erreur persiste. De quoi s'agit-il ?

63voto

Aminah Nuraini Points 5943

Dans mon cas, c'est parce que j'ai ouvert la base de données depuis SQLite Browser. Lorsque je le ferme à partir du navigateur, le problème disparaît.

42voto

Withnail Points 82

La raison pratique en est souvent que les obus python ou django ont ouvert une requête à la DB et qu'elle n'a pas été correctement fermée ; la suppression de votre accès terminal la libère souvent. J'ai eu cette erreur en exécutant des tests en ligne de commande aujourd'hui.

Edit : Je reçois des mises à jour périodiques à ce sujet. Si vous souhaitez supprimer l'accès sans redémarrer le terminal, vous pouvez le faire à partir de la ligne de commande :

from django import db
db.connections.close_all()

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X