【问题标题】:Spring Boot Application Tests with H2 Database and Flyway Fails to Seed使用 H2 数据库和 Flyway 的 Spring Boot 应用程序测试无法播种
【发布时间】:2018-09-13 00:47:03
【问题描述】:

我有一个应用程序正在尝试使用 H2 进行测试。

这是我的 application.yml:

spring:
  datasource:
    url: jdbc:h2:mem:appdb;DB_CLOSE_DELAY=-1;DATABASE_TO_UPPER=false
  jpa:
    database-platform: org.hibernate.dialect.H2Dialect
  flyway:
    url: jdbc:h2:mem:appdb;DB_CLOSE_DELAY=-1;DATABASE_TO_UPPER=false
    user: "root"
    password: ""
    locations: classpath:/db/migration, classpath:/db/seed

Flyway 成功运行迁移(或至少看起来如此),并且启动成功证明了表创建成功:

2018-04-03 08:47:42.956  INFO 17980 --- [           main] o.f.core.internal.command.DbMigrate      : Migrating schema "PUBLIC" to version 0
...

似乎我的种子正在“工作”:

2018-04-03 08:47:43.162  INFO 17980 --- [           main] o.f.core.internal.command.DbMigrate      : Migrating schema "PUBLIC" with repeatable migration Seed sample

它告诉我它有效:

2018-04-03 08:47:43.188  INFO 17980 --- [           main] o.f.core.internal.command.DbMigrate      : Successfully applied 18 migrations to schema "PUBLIC" (execution time 00:00.283s)

我的 SQL 文件是用 PostgreSQL 的 SQL 方言编写的。但是,我读过在 H2Dialect 上离开休眠状态很好。

当测试开始运行时,它会在测试完成运行时出现,数据库中没有任何内容,因此测试失败。

我的想法是 H2 在测试完成之前关闭了数据库,但这对我来说似乎很奇怪。种子和桌子工作正常。

我可以做些什么来验证这里的一切是否正常,或者我还没有尝试过哪些选项?

【问题讨论】:

    标签: java hibernate spring-boot h2 flyway


    【解决方案1】:

    尝试将 Flyway 架构设置为您的数据库名称:

    flyway:
      schemas: appdb
    

    【讨论】:

      猜你喜欢
      • 2019-02-02
      • 1970-01-01
      • 2020-12-25
      • 2016-09-07
      • 1970-01-01
      • 2017-06-05
      • 2019-05-17
      • 2019-09-06
      • 2016-07-25
      相关资源
      最近更新 更多