【问题标题】: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();
    }
    

    【讨论】:

    • 在一分钟内击败我:P
    • 解决了我的问题。谢谢:)
    【解决方案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 附加属性可用于 schemadata

        【讨论】:

          猜你喜欢
          • 2012-10-22
          • 2018-06-13
          • 2012-01-21
          • 2017-03-05
          • 2013-02-03
          • 2016-01-22
          • 2022-01-20
          • 2013-07-22
          • 2013-03-14
          相关资源
          最近更新 更多