我设置 Spring-boot 来使用 H2 内存数据库
application.properties
文件位于 /config
目录中
看起来这个文件已被处理
spring.datasource.url=jdbc:h2:mem:mydb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE
spring.datasource.driverClassName=org.h2.Driver
spring.datasource.username=sa
spring.datasource.password=
spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
spring.h2.console.path=/myconsole
spring.h2.console.enabled=true
spring.datasource.initialize=true
spring.datasource.schema=schema.sql
spring.datasource.data=data.sql
此文件已处理,控制台出现在
/myconsole
但是 schema.sql
和 data.sql
没有被处理并且 db 是空的。
我将 schema.sql
和 data.sql
文件都放在 /config
和 /src/main/resources
下。
SQL 语言指令是正确的,我可以使用控制台输入填充表格。
还有一个奇怪的事情是 即使我将 db 命名为
spring.datasource.url=jdbc:h2:mem:mydb
spring 控制台加载另一个数据库
testdb
o.s.j.d.e.EmbeddedDatabaseFactory --- Starting embedded database: url='jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=false', username='sa'
如何正确加载H2数据库?
解决了问题。
Spring Boot应用程序需要自己的jdbc依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-jdbc</artifactId>
</dependency>
我所拥有的非启动依赖项还不够:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
</dependency>
没有“spring-boot-starter-jdbc”依赖 文件“application.properties”中的“spring.datasource.url”设置 没有被处理。 该文件实际上已被处理,但未处理 jdbc 设置。 Spring boot会在内存中创建自己的testdb,从而破坏了数据 关闭应用程序后。
以下内容已过时;
spring.datasource.schema
spring.datasource.data
替代品是;
spring.sql.init.schemaLocations
spring.sql.init.dataLocations
相关类;
org.springframework.boot.sql.init.DatabaseInitializationSettings
通过spring-boot-autocinfigure-3.3.5.jar的META-INF目录下的additional-spring-configuration-metadata.json检查替换。
Spring Boot版本:3.3.5
我不知道这个替换是从哪个版本开始的,但从 3.3.5 开始,情况如上。