使用Hibernate create-drop进行Flyway数据库迁移

时间:2017-02-18 11:06:16

标签: spring hibernate flyway

我正在开始我的第一个springFW应用程序,我想创建一系列版本化的Flyway迁移文件以供将来生产使用。 现在我正在使用本地配置文件,我想在每次运行应用程序时删除并重新创建所有表,但是一旦我这样做,我似乎遇到了Flyway的问题,因为它的版本化迁移文件只会运行一次。

struct

理想情况下,我希望将Flyway配置为每次在本地配置文件中运行版本化迁移时,以便稍后我可以在生产中重复使用相同的文件。 事实是,我不知道这是否是正确的思维方式,因为我对这些技术都很陌生。

# File: application-local.properties

spring.jpa.hibernate.ddl-auto=create-drop

# FLYWAY (FlywayProperties)
flyway.locations=classpath:db/migration
flyway.enabled=true
flyway.baseline-version= 1
flyway.sql-migration-prefix=V
flyway.sql-migration-suffix=.sql
flyway.baseline-on-migrate=true
flyway.validate-on-migrate=false

1 个答案:

答案 0 :(得分:2)

您可以像这样覆盖Flyway配置:

@Bean
@Profile("local")
public Flyway flyway(DataSource dataSource) {
    Flyway flyway = new Flyway();
    flyway.setDataSource(dataSource);
    flyway.setLocations("classpath:db/migration");
    flyway.clean();
    flyway.migrate();

    return flyway;
}

或者,如果您使用的弹簧靴大于1.3,则可以使用FlywayMigrationStrategy

@Bean
@Profile("local")
public FlywayMigrationStrategy cleanMigrateStrategy() {
    FlywayMigrationStrategy strategy = new FlywayMigrationStrategy() {
        @Override
        public void migrate(Flyway flyway) {
            flyway.clean();
            flyway.migrate();
        }
    };

    return strategy;
}