Verrou de base de données d'acquisition de l'échec et de hsqldb
J'ai essayé de vous connecter à un hsql db. J'ai créé un par cours d'exécution à partir de C:\myhsql:
java -cp .;C:\hsql\lib\hsqldb.jar org.hsqldb.Server -database.0 file:db\mydb -dbname.0 MYDB
Cela a créé mydb
dans un répertoire appelé db
. Ce dossier a désormais un .lck,tmp,script,les propriétés de fichiers avec le nom mydb, et même les fichiers avec le nom MYDB du dossier en cours .
Dans du code java, j'ai essayé
Class.forName("org.hsqldb.jdbcDriver");
connection = DriverManager.getConnection("jdbc:hsqldb:file:db/sjdb", "SA", "");
Quand je lance le programme, j'obtiens cette erreur:
java.sql.SQLException: Database lock acquisition failure: lockFile: org.hsqldb.persist.LockFile@f3811c1a[file =C:\myhsql\db\mydb.lc
k, exists=true, locked=false, valid=false, ] method: checkHeartbeat read: 2010-10-19 12:46:09 heartbeat - read: -6750 ms.
...
Ici est la stacktrace:
java.sql.SQLException: Database lock acquisition failure: lockFile: org.hsqldb.persist.LockFile@f3811c1a[file =C:\myhsql\db\sjdb.lc
k, exists=true, locked=false, valid=false, ] method: checkHeartbeat read: 2010-10-19 12:46:09 heartbeat - read: -6750 ms.
at org.hsqldb.jdbc.Util.sqlException(Unknown Source)
at org.hsqldb.jdbc.Util.sqlException(Unknown Source)
at org.hsqldb.jdbc.JDBCConnection.<init>(Unknown Source)
at org.hsqldb.jdbc.JDBCDriver.getConnection(Unknown Source)
at org.hsqldb.jdbc.JDBCDriver.connect(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at ConnectHSQLDB.main(ConnectHSQLDB.java:20)
Caused by: org.hsqldb.HsqlException: Database lock acquisition failure: lockFile: org.hsqldb.persist.LockFile@f3811c1a[file =C:\myhsql\db\sjdb.lck, exists=true, locked=false, valid=false, ] method: checkHeartbeat read: 2010-10-19 12:46:09 heartbeat - read: -6750 ms.
at org.hsqldb.error.Error.error(Unknown Source)
at org.hsqldb.persist.LockFile.newLockFileLock(Unknown Source)
at org.hsqldb.persist.Logger.acquireLock(Unknown Source)
at org.hsqldb.persist.Logger.openPersistence(Unknown Source)
at org.hsqldb.Database.reopen(Unknown Source)
at org.hsqldb.Database.open(Unknown Source)
at org.hsqldb.DatabaseManager.getDatabase(Unknown Source)
at org.hsqldb.DatabaseManager.newSession(Unknown Source)
... 6 more
java.lang.NullPointerException
at ConnectHSQLDB.main(ConnectHSQLDB.java:32)
Quelqu'un peut-il me dire ce que je fais de mal? Je peux me connecter à la db à l'aide de SwingDBManager et peut insert
, delete
, et select
enregistrements dans la base de données. Je n'étais pas en cours d'exécution DBManager quand j'ai essayé le code java. Toujours le problème de verrouillage qui se passe.
OriginalL'auteur markjason72 | 2010-10-19
Vous devez vous connecter pour publier un commentaire.
La première commande permet de lancer un serveur. Ce serveur verrouille les fichiers de base de données de sorte que les "autres" ne peuvent pas les modifier. Vous devez utiliser "-dbname.0 mydb" au lieu de "MYDB" comme il doit être en minuscules.
Votre Java URL de connexion pour se connecter à la base de données est incorrect. Vous devez utiliser "jdbc:hsqldb:hsql://localhost/mydb" que la chaîne de connexion. Alors que les fichiers de base de données sont verrouillées par le serveur, vous pouvez accéder au serveur de base de données, mais vous ne pouvez pas accéder à la base de données "in-process" avec un fichier: l'URL.
OriginalL'auteur fredt
Si vous avez tout autre client qui se connecte à votre base de données, vous devez fermer.
OriginalL'auteur Jokasy
Quelle que soit la façon dont vous avez essayé est correct.
Vous n'avez pas à démarrer le HSQLDB Serveur à l'aide de séparer de commande en java, en dessous de la ligne n'est pas nécessaire, car il bloque la base de données. Empêcher d'autres processus de démarrage et de verrouillage db.
il suffit d'exécuter le programme jdbc
en dessous de la ligne
va démarrer la base de données et de donner le résultat.
de cette façon, vous n'avez pas à démarrer le serveur séparément, suffit d'exécuter le programme, qui permettra de démarrer et d'arrêter de HSQLDB pour vous.
OriginalL'auteur muthu vel
Je fais face à ce message d'erreur parce que je voulais visualiser une base de données actuellement ouverte dans un autre client comme
IntelliJ database
alors que le serveur est à l'aide de la même dbafin de faire hsql db apte à être connecté à plusieurs clients, l'utilisation
donc l'url de connexion sera comme
OriginalL'auteur Basheer AL-MOMANI
sur mon Mac, le port pour Connecteur sur HTTP changé de 8080 pour 8443 sur server.xml. et qu'est ce que l'on me donne cette erreur: HTTP et HTTPS schéma ont été en utilisant le même port
OriginalL'auteur iammyr
essayez d'utiliser la suite de l'url de connexion dans windows
connexion = DriverManager.getConnection("jdbc:hsqldb:file:///c:/hsqldb/mydb", "SA", "");
OriginalL'auteur japkpc
J'ai juste fermé NetBeans, supprimé de la base de données.lck et exécuté à nouveau l'application. Tout a bien fonctionné.
OriginalL'auteur Tundro