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

Bar*_*oss 13 flyway spring-boot

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

是否可以配置SpringBoot clean,然后migrate如果活动配置文件是test

dun*_*nni 33

您可以像这样覆盖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;
}
Run Code Online (Sandbox Code Playgroud)

在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;
}
Run Code Online (Sandbox Code Playgroud)


ste*_*kis 8

在较新版本的spring boot(例如2.0.2)中,spring.flyway.clean-on-validation-error如果由于sql文件中的更改而想使用clean,则可以使用该属性