295 votes

Comment déverrouiller une base de données SQLite ?

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 ?

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.

2voto

unexist Points 1647

Il se peut qu'un autre processus accède au fichier de la base de données - avez-vous vérifié lsof ?

2voto

Michael Cox Points 668

Une situation similaire vient de m'arriver : mon application web était capable de lire la base de données, mais ne pouvait pas effectuer d'insertions ou de mises à jour. Un redémarrage d'Apache a résolu le problème, du moins temporairement.

Ce serait bien, cependant, d'être capable de trouver la cause première.

2voto

Davide Ganz Points 21

Cela devrait être un problème interne à la base de données...
Pour moi, il s'est manifesté après avoir essayé de parcourir la base de données avec "SQLite manager"...
Donc, si vous ne pouvez pas trouver un autre processus connecté à la base de données et que vous ne pouvez pas le réparer, essayez juste cette solution radicale :

  1. Permettre d'exporter vos tables (Vous pouvez utiliser "SQLite manager" sur Firefox)
  2. Si la migration modifie votre schéma de base de données, supprimez la dernière migration qui a échoué.
  3. Renommez votre fichier "database.sqlite".
  4. Exécutez "rake db:migrate" pour créer une nouvelle base de données de travail.
  5. Il faut donner les bonnes permissions à la base de données pour l'importation des tables.
  6. Importez vos tables sauvegardées
  7. Rédiger la nouvelle migration
  8. Exécutez-le avec " rake db:migrate "

2voto

Mallow Points 303

Cela peut être une solution si vous ne parvenez pas à trouver un moyen de fermer les autres connexions à la base de données.

http://technosophos.com/content/sqlite-database-locked-error-and-unlocking-database

2voto

PinkSheep Points 63

lsof sur mon environnement Linux m'a permis de comprendre qu'un processus se bloquait en gardant le fichier ouvert.
J'ai arrêté le processus et le problème était résolu.

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