从另一个客户端连接到内存中的 HSQL 数据库(由 Spring 启动)

Posted

技术标签:

【中文标题】从另一个客户端连接到内存中的 HSQL 数据库(由 Spring 启动)【英文标题】:Connect to in-memory HSQL database (launched by Spring) from another client 【发布时间】:2014-10-10 17:26:56 【问题描述】:

我使用以下 Spring 配置创建了一个 HSQL 数据库:

<jdbc:embedded-database id="dataSource" type="HSQL">
    <jdbc:script location="resources/sql/schema.sql"/>
    <jdbc:script location="resources/sql/test-data.sql"/>
</jdbc:embedded-database>

一切正常(一次)!出于开发原因,我想从另一个客户端(我使用 IntelliJ Ultimate 的数据库支持)连接该数据库的同一实例,以更改/监视某些表的状态。是否可以?如何?如果没有,是否有任何替代方案/解决方法?

【问题讨论】:

【参考方案1】:

你不能。嵌入方式打开的HSQL数据库是以独占方式打开的,只能在一个JVM上使用。

有不同的选择:

Spring 应用程序可以实现一个协议以允许对数据库进行管理监督 您可以在服务器模式而不是嵌入式模式下使用数据库

在服务器模式下,有一个专用应用程序以独占模式打开数据库(服务器),然后任何客户端应用程序连接到服务器。但是你不能再使用&lt;jdbc:embedded-database id="dataSource" type="HSQL"&gt;,因为它是一个真正的jdbc服务器。

【讨论】:

请注意,要在服务器模式下运行 HSQLDB(允许来自外部客户端的连接),您不需要在单独的进程中启动它。您可以通过实例化 org.hsqldb.server.Server 对象将其嵌入到您的应用程序中。

以上是关于从另一个客户端连接到内存中的 HSQL 数据库(由 Spring 启动)的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Spring Boot 测试中连接到内存中的 HSQLDB 以进行查询

JPA 正在连接到一个不存在的 HSQL 数据库?

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

使用 jdbc:embedded-database 时如何连接到 Spring 创建的 HSQL?

如何将 HSQL DB Manager 连接到嵌入式数据库

HSQL 数据库:加载特定的 Java 类路径