10
votes

java.sql.sqxception: base de données verrouillée

Nous utilisons sqlite056.jar dans notre code. Tout en insérant dans la base de données en lot, nous obtenons une exception en ligne lorsque nous allons vous engager.

lignes de code em> strong> p> xxx pré>

exception forte> p>

java.sql.SQLException: database locked


0 commentaires

5 Réponses :


2
votes

Il semble que plus d'un processus tente de modifier la base de données. Vous ne pouvez avoir qu'une seule connexion ouverte à tout moment. Plus de fond sur le problème peut nous aider à vous fournir une réponse plus concrète.


2 commentaires

Pouvons-nous travailler avec de multiples tables de base de données en même temps avec un même objet de connexion de base de données Supposons que j'ai inséré une valeur dans le tableau 1 et également une valeur insérée dans le tableau 2 de la base de données avec le même objet de connexion de base de données.


ou est une exception verrouillée de la base de données survenue en raison de la ligne Obj Connection.commit ()



7
votes

Lecture d'une base de données SQLite définit l'état de verrouillage à partagé. Plusieurs lecteurs peuvent être actifs en même temps.

écrire dans une base de données SQLite définit l'état de verrouillage à l'exclusivité. Aucun autre processus ne peut être actif à cette époque.

Vous pouvez trouver une explication détaillée sur http://www.sqlite.org/Lockingv3.htmlLec a>


1 commentaires

J'ai eu la même erreur lors de l'exécution d'une applet (qui a accédé à une DB SQLite) avec AppetViewer. Mais seulement lors de la course sous une JVM 64 bits. Passer à un JVM 32 bits a fonctionné bien (Windows). Le pilote 64 bits n'a probablement pas été compilé dans le pot.



9
votes

La connexion doit être fermée après chaque requête. Si l'une des connexions persiste toujours. J'avais la même erreur sur Java Desktop Apps, maintenant résolue.


0 commentaires

0
votes

Dans mon cas, j'ai oublié d'ajouter où la clause de ma requête de mise à jour, et que donne "la base de données verrouillée ".

Vérifiez soigneusement vos requêtes.

Edit: j'ai oublié d'indiquer que j'ai utilisé un type de requête de mise à jour où je modifie plusieurs attributs:

Mettre à jour les utilisateurs Définition du poids = 160, désiré poids = 145 où id = 1;


3 commentaires

Une très ancienne question - mais merci d'avoir tenté de répondre. Dans ce cas particulier, vous n'avez aucune idée de l'instruction SQL en question ressemblant à - et suggère donc que la requête était mise à jour avec manquant vient à travers comme devinge-travail. Ce qui aurait été plus approprié dans ce cas était de demander (dans un commentaire) ce que la requête sql ressemblait - affirmant que la cause peut être quelque chose de similaire à un manquant> où clause.


J'ai ajouté Modifier à mon post. Je pense que peu importe la longue question, les gens googles pour ce problème, comme moi. Les salutations!


Bon point. En ce qui concerne la déclaration SQL, je voulais dire que la question elle-même n'incluait pas l'instruction SQL, de sorte que vous ne l'auriez pas connu (sans le demander) comment il a regardé. Mais bon point concernant répondre de vieilles questions - bon point.



0
votes

Fermer le navigateur DB (travaillé pour moi) ou quoi que ce soit d'autre accède à la base de données


0 commentaires