2013-04-23 138 views
5

我试图连接到hsqldb(使用版本2.2.9)。hsqldb:连接到文件db时获取数据库锁定

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

当试图连接到数据库经过我的UI我得到以下异常:

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) 

我推测该数据库被锁定,因为

我使用以下方法创建一个DatabaseManagerSwing在我的用户界面之前建立了一个连接,所以我关闭了那个连接。 这引起了以下异常:

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) 

我使用Spring MVC和C3P0。 连接详细信息(绝对路径DB提供):

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。

我将不胜感激任何帮助或提示。

谢谢。

+1

你想打开一个已经被webapp使用的数据库吗? – shyam 2013-04-23 12:11:31

+1

嗨shyam,谢谢你的回复。我只是发现了一个与该数据库挂起的连接,因此我不知道该锁,因此锁。它现在正在工作,负责建立连接的代码有一个设计流程。我花了几个小时才意识到(这就是为什么我把它作为问题发布) – monika 2013-04-23 12:46:09

+0

@mgnyp我有同样的问题。请你解释一下如何解决它? – nawara 2013-09-02 18:47:12

回答

11

我能够通过在附加连接字符串中包含; readonly = true作为属性来禁用锁定文件。否则,我发现锁始终保存在文件数据库中。我工作的样本连接字符串是jdbc:hsqldb:file:my/file/location; readonly = true

0

我有同样的问题。刚删除.lck(锁定)文件并重新连接。现在它工作正常。

相关问题