spring-data-jpa - Flyway 迁移在 H2 嵌入式数据库中不持久

标签 spring-data-jpa h2 flyway

我实际上正在使用 spring boot 编写一个小型 web 应用程序,并希望将(嵌入式)H2 数据库与 Spring Data JPA 和 Flyway 一起用于数据库迁移。

这是我的 application.properties:

spring.datasource.url=jdbc:h2:~/database;DB_CLOSE_ON_EXIT=FALSE;DB_CLOSE_DELAY=-1;
spring.datasource.username=admin
spring.datasource.password=admin
spring.datasource.driver-class-name=org.h2.Driver

在 @SpringBootApplication 类的 main() 方法中,我执行以下操作:
ResourceBundle applicationProperties = ResourceBundle.getBundle("application");
Flyway flyway = new Flyway();
flyway.setDataSource(applicationProperties.getString("spring.datasource.url"), applicationProperties.getString("spring.datasource.username"), applicationProperties.getString("spring.datasource.password"));
flyway.migrate();

我添加了一个脚本,它在数据库中创建一个表 USER,Flyway 说它已正确迁移,但是如果我连接到数据库,在架构 PUBLIC 中只列出了 Flyway 的 schema_versions 表。

如果我添加另一个脚本,该脚本将基本数据插入到 USER 表中,迁移将失败,因为在重新启动 Spring Boot 应用程序后该表不存在。

谁能告诉我我的配置中是否缺少?或者如果我的设置中有任何错误的假设......

最佳答案

我没有足够的关于您的配置的数据

  • 暗示:
    请参阅迁移文件必须是目录/db/migration
  • 的一部分
  • 暗示
    在分数
  • 下使用类似 V1.0.1__name.sql 2 的模式
  • 暗示
    根据 Flyway 版本,您应该从大于 1.0 的 sql 文件版本开始,例如 1.0.1。
  • 如果您使用内存数据库,则默认 spring boot jpa 会删除您的数据库内容。见 http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-sql.html第 28.3.3 节。
  • 关于spring-data-jpa - Flyway 迁移在 H2 嵌入式数据库中不持久,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32012241/

    相关文章:

    java - StackOverflow 与 Spring Data JPA findOne

    java - 迁移 spring boot 2.1.3 -> 2.1.4 导致数据 jpa 测试出现问题

    tomcat - 未在自定义应用程序中创建 Activiti 数据库表

    mysql - SpringBoot 的 DataJpaTest 与 Flyway

    java - Spring Boot中如何使用ORDER BY?

    java - Spring @Autowired EntityManager 失败

    java - jpa @SequenceGenerator.allocationSize 是什么意思?

    passwords - H2数据库密码恢复

    oracle - Flyway 条件数据库迁移

    java - Spring Boot、Hibernate 和 flyway 数据库问题