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 ?
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 .
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.
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 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.