我正在使用Springboot和Flyway。迁移工作正常但我希望能够在应用程序上下文加载clean
配置文件时执行test
flyway命令。
如果有效个人资料为clean
,是否可以将SpringBoot配置为migrate
然后test
?
答案 0 :(得分:32)
您可以像这样覆盖Flyway自动配置:
@Bean
@Profile("test")
public Flyway flyway(DataSource theDataSource) {
Flyway flyway = new Flyway();
flyway.setDataSource(theDataSource);
flyway.setLocations("classpath:db/migration");
flyway.clean();
flyway.migrate();
return flyway;
}
在Spring Boot 1.3中(当前版本为1.3.0.M1,GA版本计划于9月发布),您可以使用FlywayMigrationStrategy bean来定义要运行的操作:
@Bean
@Profile("test")
public FlywayMigrationStrategy cleanMigrateStrategy() {
FlywayMigrationStrategy strategy = new FlywayMigrationStrategy() {
@Override
public void migrate(Flyway flyway) {
flyway.clean();
flyway.migrate();
}
};
return strategy;
}
答案 1 :(得分:3)
在最新版本的Spring Boot中(例如2.0.2),如果由于sql文件的更改而要使用clean,则可以使用属性...
get404json := 'insert into public.events_404_normalized(event_name) select json_data->>''event_name'' from public.event_404 WHERE id = ANY ($1)';
execute get404json using result404ids;
...