2013-04-23 10 views
5

Sto provando a connettermi a un hsqldb (utilizzando la versione 2.2.9).hsqldb: acquisizione del blocco del database durante la connessione a un file db

ho creato uno utilizzando il seguente:

java -cp hsqldb-2.2.9.jar org/hsqldb/util/DatabaseManagerSwing 

Quando si tenta di connettersi al db attraverso la mia ui sto ottenendo la seguente eccezione:

Exception occured : java.sql.SQLException: Database lock acquisition failure: lockFile: [email protected][file =/rhel5pdi/home/mgnyp/workspace/src/Project/webapp/WEB-INF/lib/testDataBase.lck, exists=true, locked=false, valid=false, ] method: checkHeartbeat read: 2013-04-23 10:35:22 heartbeat - read: -8403 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(DriverManager.java:582) 
    at java.sql.DriverManager.getConnection(DriverManager.java:185) 

mi si presume il db è bloccata a causa il DatabaseManagerSwing ha stabilito una connessione prima che il mio ui lo facesse, quindi l'ho chiuso. Ciò ha causato la seguente eccezione:

Exception occured : java.sql.SQLException: Database lock acquisition failure: lockFile: or[email protected][file =/rhel5pdi/home/mgnyp/workspace/src/PmtMetricsUI2/webapp/WEB-INF/lib/testDataBase.lck, exists=false, locked=false, valid=false, ] method: openRAF reason: java.io.FileNotFoundException: /rhel5pdi/home/mgnyp/workspace/src/Project/webapp/WEB-INF/lib/testDataBase.lck (Permission denied) 
    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(DriverManager.java:582) 
    at java.sql.DriverManager.getConnection(DriverManager.java:185) 

sto usando MVC primavera e c3p0. dettagli di collegamento (percorso assoluto del db previsto):

Connection con = DriverManager.getConnection("jdbc:hsqldb:file:/home/mgnyp/workspace/src/Project/webapp/WEB-INF/lib/testDataBase", "SA", ""); 

Ho provato questo approccio, senza successo, purtroppo: Database lock acquisition failure and hsqldb

ho anche guardato i documenti a hsql.org

Apologies se il problema è ovvio, non ho mai usato hsql prima.

Apprezzerei qualsiasi aiuto o suggerimento.

Grazie.

+1

Stai cercando di aprire un database che è già utilizzato da una webapp? – shyam

+1

Ciao timida, grazie per la risposta. Ho appena scoperto una connessione sospesa a quel database che non ero a conoscenza, quindi il blocco. Funziona ora, il codice che era responsabile per stabilire la connessione aveva un flusso di progettazione. Mi ci sono volute diverse ore per rendermene conto (è per questo che l'ho postato come domanda) – monika

+0

@mgnyp Ho lo stesso problema. Potresti spiegare come risolverlo? – nawara

risposta

11

sono stato in grado di disattivare il file di blocco includendo; readonly = true come una proprietà sulla stringa di connessione aggiuntiva. Altrimenti ho scoperto che il blocco è sempre trattenuto per un database di file. Una stringa di connessione di esempio che ha funzionato per me era jdbc: HSQLDB: file: mio/file/posizione; readonly = true

0

Ho avuto lo stesso problema. appena cancellato il file .lck (lock) e riconnesso. Ora funziona bene.

Problemi correlati