我有一个 Spring boot 应用程序,使用 jpa 数据和 hsqldb 2.3.3(在 Centos 7 中)运行,该应用程序运行良好,但我想使用 HSQLDB 数据库管理器来检查数据状态,但是它失败了:
应用程序属性:
spring.datasource.url=jdbc:hsqldb:mem:testdb
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.database-platform=org.hibernate.dialect.HSQLDialect
spring.jpa.show-sql=true
spring.jpa.hibernate.ddl-auto=create
启动 HSQLDB 的命令:
java -cp /home/mycentos/.m2/repository/org/hsqldb/hsqldb/2.3.3/hsqldb-2.3.3.jar org.hsqldb.util.DatabaseManagerSwing
如果我尝试使用 HSQLDB 服务器模式登录,它会弹出
Connection refused
错误jdbc:hsqldb:hsql://localhost/testdb
如果我尝试登录内存数据库,我可以登录但没有显示表和数据
jdbc:hsqldb:hsql:testdb
题:
最佳答案
要访问 Spring Boot 应用程序创建的 HSQL DB,您必须启动 HSQL 服务器。例如,创建一个 XML 配置文件 hsql_cfg.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="hqlServer" class="org.hsqldb.server.Server" init-method="start" destroy-method="stop">
<property name="properties"><bean class="org.hsqldb.persist.HsqlProperties">
<constructor-arg><props>
<prop key="server.database.0">mem:testdb</prop>
<prop key="server.dbname.0">testdb</prop><!--DB name for network connection-->
<prop key="server.no_system_exit">true</prop>
<prop key="server.port">9001</prop><!--default port is 9001 -->
</props></constructor-arg>
</bean></property>
</bean>
</beans>
这是在主应用程序类中导入 XML 配置的示例。
@SpringBootApplication
@ImportResource(value="classpath:/package/hsql_cfg.xml")
public class MyApplication {
}
HSQL 服务器将以 Spring 启动应用程序启动。其他应用程序可以使用 JDBC url 连接到 HSQL 服务器
jdbc:hsqldb:hsql://ip_address:port/testdb
当然,
hsqldb.jar
加载 JDBC 驱动程序类是必需的。
关于spring - 如何从 Spring Boot 应用程序以服务器模式启动 HSQLDB,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40114231/