sqlite> DELETE FROM mails WHERE (`id` = 71);
SQL error: database is locked
Comment puis-je déverrouiller la base de données pour que cela fonctionne ?
sqlite> DELETE FROM mails WHERE (`id` = 71);
SQL error: database is locked
Comment puis-je déverrouiller la base de données pour que cela fonctionne ?
D'après mon expérience, cette erreur est causée par : Vous avez ouvert plusieurs connexions.
Par exemple :
Je ne suis pas sûr des détails de SQLITE3 sur la façon de gérer les multiples threads/demandes, mais quand je ferme le sqlitebrowser et le thread electron, alors rails fonctionne bien et ne bloque plus.
Dans vos commentaires précédents, vous avez dit qu'un fichier -journal était présent.
Cela pourrait signifier que vous avez ouvert une transaction (EXCLUSIVE ?) et que vous n'avez pas encore validé les données. Votre programme ou un autre processus a-t-il laissé le -journal derrière lui ?
Le redémarrage du processus sqlite examinera le fichier journal et nettoiera toutes les actions non engagées et supprimera le fichier -journal.
Comme l'a dit Seun Osewa, il arrive qu'un processus zombie reste dans le terminal avec un verrou acquis, même si vous ne pensez pas que cela soit possible. Votre script s'exécute, se plante, et vous retournez au prompt, mais il y a un processus zombie engendré quelque part par un appel de bibliothèque, et ce processus a le verrou.
Fermer le terminal dans lequel vous étiez (sous OSX) peut fonctionner. Redémarrer fonctionnera. Vous pouvez rechercher les processus "python" (par exemple) qui ne font rien, et les tuer.
Vous pouvez essayer ceci : .timeout 100
pour définir le délai d'attente. Je ne sais pas ce qui se passe en ligne de commande mais en C# .Net lorsque je fais cela : "UPDATE table-name SET column-name = value;"
Je comprends que la base de données est verrouillée mais cette "UPDATE table-name SET column-name = value"
ça va bien.
Il semble que lorsque vous ajoutez ;, sqlite va chercher une autre commande.
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.
0 votes
Il se peut qu'un autre processus accède au fichier de la base de données - avez-vous vérifié lsof ?
0 votes
J'ai eu le même problème, le problème était dans l'antivirus quand je le désactive mon application fonctionne bien, mais quand je l'active je trouve l'erreur "la base de données est verrouillée", j'espère que cela va vous aider.