我正在尝试连接到hsqldb(使用版本2.2.9)。
我使用以下内容创建了一个:
java -cp hsqldb-2.2.9.jar org/hsqldb/util/DatabaseManagerSwing
当尝试通过我的ui连接到db时,我遇到以下异常:
Exception occured : java.sql.SQLException: Database lock acquisition failure: lockFile: org.hsqldb.persist.LockFile@76e90d02[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)
我假设数据库被锁定,因为DatabaseManagerSwing在我的ui之前建立了连接,所以我关闭了那个。 这导致以下异常:
Exception occured : java.sql.SQLException: Database lock acquisition failure: lockFile: org.hsqldb.persist.LockFile@76e90d02[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)
我正在使用spring mvc和c3p0。 连接详细信息(提供的数据库的绝对路径):
Connection con = DriverManager.getConnection("jdbc:hsqldb:file:/home/mgnyp/workspace/src/Project/webapp/WEB-INF/lib/testDataBase", "SA", "");
我尝试过这种方法,不幸的是不成功: Database lock acquisition failure and hsqldb
我也查看了hsql.org上的文档
道歉,如果问题很明显,我以前从未使用过hsql。
我希望得到任何帮助或提示。
谢谢。
答案 0 :(得分:12)
我能够通过包含; readonly = true作为附加连接字符串上的属性来禁用锁定文件。否则,我发现锁定始终是为文件数据库保留的。适合我的示例连接字符串是jdbc:hsqldb:file:my / file / location; readonly = true
答案 1 :(得分:0)
我遇到了同样的问题。刚刚删除.lck(锁定)文件并重新连接。现在它工作正常。