2013-04-23 30 views
5

Tôi đang cố gắng kết nối với một hsqldb (sử dụng phiên bản 2.2.9).hsqldb: Thu thập khóa cơ sở dữ liệu khi kết nối với một tệp db

tôi tạo một trang bằng những điều sau đây:

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

Khi cố gắng để kết nối với db qua ui của tôi tôi nhận được ngoại lệ sau đây:

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) 

tôi coi các db bị khóa vì DatabaseManagerSwing đã thiết lập kết nối trước khi ui của tôi thực hiện, vì vậy tôi đã đóng kết nối đó. Điều này gây ra ngoại lệ sau:

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

Tôi đang sử dụng mvc mùa xuân và c3p0. chi tiết kết nối (tuyệt đối đường dẫn đến db cung cấp):

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

Tôi đã thử phương pháp này, thất bại đáng tiếc: Database lock acquisition failure and hsqldb

Tôi cũng nhìn lên các tài liệu tại hsql.org

Apologies nếu vấn đề là hiển nhiên, tôi chưa bao giờ sử dụng hsql trước đây.

Tôi sẽ đánh giá cao bất kỳ trợ giúp hoặc gợi ý nào.

Cảm ơn bạn.

+1

Bạn có đang cố gắng mở một cơ sở dữ liệu đã được một ứng dụng web sử dụng không? – shyam

+1

Xin chào shyam, cảm ơn bạn đã trả lời. Tôi chỉ phát hiện ra một kết nối treo vào cơ sở dữ liệu mà tôi đã không nhận thức được, do đó khóa. Nó hoạt động ngay bây giờ, mã chịu trách nhiệm thiết lập kết nối có một luồng thiết kế. Tôi mất vài giờ để nhận ra rằng (đó là lý do tại sao tôi đăng nó như một câu hỏi) – monika

+0

@mgnyp Tôi có cùng một vấn đề. Bạn có thể giải thích cách khắc phục nó không? – nawara

Trả lời

11

Tôi có thể tắt tệp khóa bằng cách bao gồm; readonly = true làm thuộc tính trên chuỗi kết nối bổ sung. Nếu không, tôi đã thấy rằng khóa luôn được giữ cho một cơ sở dữ liệu tệp. Chuỗi kết nối mẫu làm việc cho tôi là jdbc: hsqldb: file: my/file/location; readonly = true

0

Tôi đã gặp vấn đề tương tự. vừa xóa tệp .lck (khóa) và kết nối lại. Bây giờ nó hoạt động tốt.

Các vấn đề liên quan