从另一个客户端连接到内存中的 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 应用程序可以实现一个协议以允许对数据库进行管理监督 您可以在服务器模式而不是嵌入式模式下使用数据库在服务器模式下,有一个专用应用程序以独占模式打开数据库(服务器),然后任何客户端应用程序连接到服务器。但是你不能再使用<jdbc:embedded-database id="dataSource" type="HSQL">
,因为它是一个真正的jdbc服务器。
【讨论】:
请注意,要在服务器模式下运行 HSQLDB(允许来自外部客户端的连接),您不需要在单独的进程中启动它。您可以通过实例化org.hsqldb.server.Server
对象将其嵌入到您的应用程序中。以上是关于从另一个客户端连接到内存中的 HSQL 数据库(由 Spring 启动)的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Spring Boot 测试中连接到内存中的 HSQLDB 以进行查询
连接 HSQL 数据库管理器时无法从 Java 代码连接到 HSQL 数据库