hsqldb:连接到文件db时获取数据库锁定
问题描述:
我试图连接到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。
我将不胜感激任何帮助或提示。
谢谢。
答
我能够通过在附加连接字符串中包含; readonly = true作为属性来禁用锁定文件。否则,我发现锁始终保存在文件数据库中。我工作的样本连接字符串是jdbc:hsqldb:file:my/file/location; readonly = true
答
我有同样的问题。刚删除.lck(锁定)文件并重新连接。现在它工作正常。
你想打开一个已经被webapp使用的数据库吗? – shyam 2013-04-23 12:11:31
嗨shyam,谢谢你的回复。我只是发现了一个与该数据库挂起的连接,因此我不知道该锁,因此锁。它现在正在工作,负责建立连接的代码有一个设计流程。我花了几个小时才意识到(这就是为什么我把它作为问题发布) – monika 2013-04-23 12:46:09
@mgnyp我有同样的问题。请你解释一下如何解决它? – nawara 2013-09-02 18:47:12