为什么我在H2模式中找不到我的表/如何验证我的Spring启动应用程序正在使用哪个H2模式?

时间:2017-04-22 14:37:26

标签: spring-boot spring-data h2

我正在运行一个春季启动应用

除了maven之外没有任何h2设置

当我连接到h2控制台时,我可以看到应该为两个实体创建的表

我连接了JDBC URL: jdbc:h2:mem:testdb (应该是默认值)

有没有办法确定H2当前正在运行什么模式/或H2的某些日志文件?

在我的application.properties中我有这个:

spring.h2.console.enabled=true
spring.h2.console.path=/h2

我在某处看到H2在登录时初始化自己,但我正在观看这些演示的确切步骤,所以不确定是这样。

这些是H @ console中的设置:

enter image description here

4 个答案:

答案 0 :(得分:2)

您可以使用以下配置明确指示spring boot创建并连接到H2中的特定架构。

spring.datasource.url=jdbc:h2:~/test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=sa

这将在文件模式下在h2中创建名称测试数据库的数据源。在您的主文件夹中会有一个名为test.db的文件,它将是数据库的数据文件。

DB_CLOSE_ON_EXIT属性决定在每次重新启动时重新创建数据库。

答案 1 :(得分:1)

我实际上一直看到了正确的架构

我认为我没有看到正确架构的原因是 - 我希望看到的JPA实体,不存在。

然后我发现这是因为我没有正确命名JPA实体的包

我把它命名为“域名”(见图):

enter image description here

我应该将它命名为com.example.domain,可以看出:

enter image description here

这是因为Spring Boot看起来正在使用主类的包下面进行@ComponentScan“所以我必须在”域“前面加上主类所在的包的名称,是com.example

答案 2 :(得分:1)

通过在数据源网址中添加“ SET SCHEMA {default schema}” ,有一种更简单的方法可以告诉Spring JPA H2数据源的默认模式,例如:

spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;INIT=CREATE SCHEMA IF NOT EXISTS testdb\\;SET SCHEMA testdb

答案 3 :(得分:0)

对我来说,我在运行 Sprinboot 时必须检查日志

jdbc:h2:mem:9967b201-6b59-4925-acb3-d2e50dc5d9a5.  --> this can be any other auto generated UUD

将此添加到浏览器中的 JDPC URL 将让您看到您创建的表。

enter image description here