【问题标题】:Spring H2 embedded database [duplicate]Spring H2嵌入式数据库[重复]
【发布时间】:2017-04-24 18:35:55
【问题描述】:
我想创建一个填充了测试数据的内存数据库以进行快速测试,所以我在我的配置文件中声明了这个 bean,但我也想设置这个属性:
MODE=MySQL
DB_CLOSE_ON_EXIT=FALSE
但我不知道在哪里做
@Bean
public DataSource dataSource(){
return
(new EmbeddedDatabaseBuilder())
.setType(EmbeddedDatabaseType.H2) //.H2
.addScript("classpath:db/H2.schema.sql")
.addScript("classpath:db/H2.data.sql")
.build();
}
【问题讨论】:
标签:
java
spring
spring-boot
h2
embedded-database
【解决方案1】:
试试这个
@Bean
public DataSource dataSource(){
return
new EmbeddedDatabaseBuilder()
.setType(EmbeddedDatabaseType.H2)
.setName("testDB;DB_CLOSE_ON_EXIT=FALSE;MODE=MySQL")
.addScript("classpath:db/H2.schema.sql")
.addScript("classpath:db/H2.data.sql")
.build();
}
【解决方案2】:
您可以尝试使用EmbeddedDatabaseBuilder.setName()
@Bean
public DataSource dataSource() {
return
new EmbeddedDatabaseBuilder()
.setName("testdb;MODE=MySQL;DB_CLOSE_ON_EXIT=false")
.setType(EmbeddedDatabaseType.H2) //.H2
.addScript("classpath:db/H2.schema.sql")
.addScript("classpath:db/H2.data.sql")
.build();
}
注意:我自己没有尝试过,但在this答案上找到了线索
【解决方案3】:
另一种方法是使用属性连接数据源。这样,您可以设置可以包含附加属性的 JDBC URL。
【解决方案4】:
该模式可以通过 H2 上的 SQL 语句来完成,但我很确定 DB_CLOSE_DELAY 必须设置为 URL 的一部分,这不容易挂钩。您最好在 application.properties/yml 中设置它并让 spring 自动配置它
jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;MODE=MySQL 将是 spring.datasource.url 附加属性可用于 schema 和 data