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.

0voto

Ari Pratomo Points 61

J'ai également obtenu cette erreur dans la fenêtre, pour résoudre cette erreur il suffit d'aller dans le gestionnaire de tâches et de tuer la tâche de l'interprète ruby.

0voto

Mohsin Points 11

Pour une raison quelconque, la base de données a été verrouillée. Voici comment je l'ai réparé.

  1. J'ai téléchargé le fichier sqlite sur mon système (FTP).
  2. Suppression du fichier sqlite en ligne
  3. J'ai téléchargé le fichier vers l'hébergeur.

Il fonctionne bien maintenant.

0voto

Wennie Points 161

Dans mon cas, j'ai également obtenu cette erreur.

J'ai déjà vérifié si d'autres processus pouvaient être à l'origine du verrouillage de la base de données (SQLite Manager, autres programmes qui se connectent à ma base de données). Mais il n'y a pas d'autre programme qui s'y connecte, c'est juste un autre programme actif. Connexion SQLConnection dans la même application qui reste connecté .

Essayez de vérifier vos précédentes Connexion SQL active qui pourrait être encore connecté (déconnectez-le d'abord) avant d'établir une nouvelle connexion SQLConnection et nouvelle commande .

0voto

Cela est dû au fait qu'une autre requête est en cours d'exécution sur cette base de données. SQLite est une base de données où les requêtes s'exécutent de manière synchrone. Donc, si quelqu'un d'autre utilise cette base de données, si vous effectuez une requête ou une transaction, vous obtiendrez cette erreur.

Arrêtez donc le processus qui utilise cette base de données particulière et exécutez ensuite votre requête.

0voto

Mr Rowe Points 141

Je recevais également des verrous sqlite dans une application C# .NET 4.6.1 que j'ai construite lorsqu'elle essayait d'écrire des données, mais pas lors de l'exécution de l'application dans Visual Studio sur ma machine de développement. Au lieu de cela, cela ne se produisait que lorsque l'application était installée et exécutée sur une machine Windows 10 distante.

Au départ, j'ai pensé qu'il s'agissait des permissions du système de fichiers, mais il s'avère que les pilotes du paquetage System.Data.SQLite (v1.0.109.2) que j'ai installé dans le projet à l'aide de Nuget causaient le problème. J'ai supprimé le paquet NuGet et référencé manuellement une ancienne version des pilotes dans le projet. Une fois l'application réinstallée sur la machine distante, les problèmes de verrouillage ont disparu comme par magie. Je ne peux que penser qu'il y avait un bug avec les derniers pilotes ou le paquet Nuget.

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