如何运行flyway:在SpringBoot应用程序迁移之前清理?

时间:2015-06-14 14:18:34

标签: spring-boot flyway

我正在使用Springboot和Flyway。迁移工作正常但我希望能够在应用程序上下文加载clean配置文件时执行test flyway命令。

如果有效个人资料为clean,是否可以将SpringBoot配置为migrate然后test

2 个答案:

答案 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; ...