6

hsqldb に接続しようとしています (バージョン 2.2.9 を使用)。

以下を使用して作成しました。

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

UI を介してデータベースに接続しようとすると、次の例外が発生します。

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 より先に接続を確立したため、db がロックされていると推測したので、その接続を閉じました。これにより、次の例外が発生しました。

 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", "");

私はこのアプローチを試みましたが、残念ながら失敗しました: データベースロックの取得失敗と hsqldb

hsql.org でドキュメントも調べました

問題が明白である場合はお詫びします。私はこれまで hsql を使用したことがありません。

助けやヒントをいただければ幸いです。

ありがとうございました。

4

2 に答える 2

13

追加の接続文字列のプロパティとして ;readonly=true を含めることで、ロック ファイルを無効にすることができました。そうしないと、ファイル データベースのロックが常に保持されていることがわかりました。私にとってうまくいったサンプル接続文字列は jdbc:hsqldb:file:my/file/location;readonly=true でした

于 2014-04-30T19:45:57.823 に答える