代码之家  ›  专栏  ›  技术社区  ›  justus

Flyway迁移在H2嵌入式数据库中不持久

  •  5
  • justus  · 技术社区  · 11 年前

    实际上,我正在用spring-boot编写一个小型web应用程序,并希望将(嵌入式)H2数据库与SpringDataJPA和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应用程序后,该表不存在。

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

    1 回复  |  直到 11 年前
        1
  •  10
  •   Florian E.    11 年前

    我没有足够的配置数据

    1. 提示: 请参阅迁移文件必须是目录/db/migration的一部分

    2. 暗示 使用类似V1.0.1__name的模式。sql 2低于分数

    3. 暗示 根据Flyway版本,您应该从大于1.0的sql文件版本开始,例如1.0.1。

    4. 如果您使用内存中的数据库,提示每个默认的spring boot jpa会删除数据库内容。看见 http://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-sql.html 第28.3.3节。