连接 HSQL 数据库管理器后无法从 Java 代码连接到 HSQL 数据库

Can't connect to HSQL Database from Java code when HSQL Database Manager is Connected

当我打开并连接 HSQL DB Manager (Swing) 时,Java 代码无法连接到数据库并抛出此消息:

java.sql.SQLException: Database lock acquisition failure: lockFile: org.hsqldb.persist.LockFile@cf53680[file =C:\somedb\db.lck ...

但是一旦我从数据库管理器关闭与数据库的连接,Java代码就开始正常工作了。

这是什么?

HSQLDB 主要是一个嵌入式 数据库引擎。这意味着如果你 运行 它嵌入,只有一个进程(=JVM)可以使用数据库。来自其他进程的连接是不可能的。

解决这个问题的唯一方法是以 server 模式启动 HSQLDB,其中 HSQLDB 运行 在其自己的进程 (JVM) 中并接受来自其他进程的连接 - 本质上与 "traditional" 数据库服务器(如 Postgres 或 Oracle)相同的设置。

手册中记录了如何在服务器模式下启动 HSQLD 的详细信息:

http://hsqldb.org/doc/2.0/guide/running-chapt.html#rgc_server_modes