我实际上正在使用 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
在分数
根据 Flyway 版本,您应该从大于 1.0 的 sql 文件版本开始,例如 1.0.1。
关于spring-data-jpa - Flyway 迁移在 H2 嵌入式数据库中不持久,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32012241/