Java hsqldb数据库锁获取失败

Java hsqldb数据库锁获取失败,java,jdbc,hsqldb,Java,Jdbc,Hsqldb,我使用以下JDBC URL作为进程内连接运行此连接: jdbc:hsqldb:file:C:\Program Files\360Works\SyncData2\u MirrorSync\Configurations\3d0c6a29-294b-4a24-b075-70302345fdb5\MirrorSync 即使在完全重新启动计算机后,我也会遇到此错误: java.util.concurrent.ExecutionException:java.sql.SQLException:数据库锁获取失败

我使用以下JDBC URL作为进程内连接运行此连接:

jdbc:hsqldb:file:C:\Program Files\360Works\SyncData2\u MirrorSync\Configurations\3d0c6a29-294b-4a24-b075-70302345fdb5\MirrorSync

即使在完全重新启动计算机后,我也会遇到此错误:

java.util.concurrent.ExecutionException:java.sql.SQLException:数据库锁获取失败:lockFile:org.hsqldb.persist。LockFile@e27ecaee[file=C:\Program Files\360Works\SyncData2\u MirrorSync\Configurations\3d0c6a29-294b-4a24-b075-70302345fdb5\MirrorSync.lck,exists=true,locked=false,valid=false,]方法:检查魔法:“0000000000000000”


如何修复此问题?

我通过手动删除错误消息引用的.lck文件解决了此问题。

添加流动属性 hsqldb.lock_file=false

比如说
hsqldb.lock_file=false;hsqldb.sqllog=3;关机=真;syntax_ora=true

您可以通过以下方式访问具有锁定的HSQLDB数据库:

1-更新
my db name.properties
文件并添加:

hsqldb.lock_file=false
2-或删除
my db name.lck
文件

3-或使用传递属性作为参数连接到数据库:

#Without Sqltool:
    java -cp [jar-path]/hsqldb-2.4.0.jar --inlineRc=url=jdbc:hsqldb:file:/[my-db-file-path]/[db-name];readonly=true;hsqldb.lock_file=false,user=sa

#With Sqltool
    java -cp [jar-path]/hsqldb-2.4.0.jar:[jar-path]/sqltool-2.4.0.jar org.hsqldb.cmdline.SqlTool --inlineRc=url=jdbc:hsqldb:file:/[my-db-file-path]/[db-name];readonly=true;hsqldb.lock_file=false,user=sa
其他HSQLDB数据库参数可以在这里找到,但是请注意,只有很少的参数可以在第一次更新后更新。

在没有提升权限的情况下运行的程序(例如,不是“以管理员身份运行”)的可能副本限制了对%ProgramFiles%文件夹的访问。尝试将数据库(至少暂时)移动到普通用户可以读/写的位置,比如“公共文档”。或者,如果您只需要对数据库进行读访问,请尝试附加
;readonly=true
到连接URL。@可怕的袋熊:我很确定这是一个与引用的问题不同的问题,因为我没有试图从外部进程连接到HSQL数据库。这难道不可能让多个进程同时写入HSQL数据库文件吗?谢谢,这是最好的答案