2013-04-23 25 views
5

Próbuję połączyć się z hsqldb (przy użyciu wersji 2.2.9).hsqldb: Pobieranie blokady bazy danych podczas łączenia z plikiem db

stworzyłem jedną przy użyciu następujących:

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

Gdy próbuje połączyć się z db thru mojego ui ja otrzymuję następujący wyjątek:

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) 

I domniemywać db jest zablokowana, ponieważ DatabaseManagerSwing ustanowił połączenie przed moim ui, więc zamknąłem to. Spowodowało następujący wyjątek:

Exception occured : java.sql.SQLException: Database lock acquisition failure: lockFile: org.h[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) 

Używam MVC sprężyny i C3P0. szczegóły połączenia (ścieżka bezwzględna do db przewidziano):

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

Próbowałem tego podejścia, niestety nieudana: Database lock acquisition failure and hsqldb

ja również spojrzał docs na hsql.org

Apologies jeśli problem jest oczywisty, nigdy wcześniej nie używałam hsql.

Byłbym wdzięczny za każdą pomoc lub wskazówki.

Dziękuję.

+1

Czy próbujesz otworzyć bazę danych, która jest już używana przez webapp? – shyam

+1

Cześć, nieśmiały, dziękuję za odpowiedź. Właśnie odkrywam wiszące połączenie z tą bazą danych, której nie zdawałem sobie sprawy, a więc zamek. Teraz działa, kod, który był odpowiedzialny za nawiązanie połączenia, miał przepływ projektu. Zajęło mi to kilka godzin, aby zrozumieć, że (dlatego napisałem to jako pytanie) – monika

+0

@mgnyp Mam ten sam problem. Czy mógłbyś wyjaśnić, jak to naprawić? – nawara

Odpowiedz

11

Udało mi się wyłączyć plik blokady, dołączając: readonly = true jako właściwość dodatkowego ciągu połączenia. W przeciwnym razie odkryłem, że blokada jest zawsze przechowywana dla bazy danych plików. Przykładowy ciąg połączenia, który pracował dla mnie, to: jsbc: hsqldb: file: my/file/location; readonly = true

0

Miałem ten sam problem. właśnie usunął plik .lck (blokada) i ponownie się połączył. Teraz działa dobrze.

Powiązane problemy