2017-02-18 6 views
0

私は最初のspringFWアプリケーションを開始しています。今後のプロダクション用に一連のバージョンのFlyway移行ファイルを作成したいと考えています。 現時点では私はローカルプロファイルを使用していますが、アプリケーションを実行するたびにすべてのテーブルを削除して再作成したいのですが、これを行うと、バージョン化された移行ファイルは1回だけ実行されるため、Flywayに問題があるようです。Hibernate create-dropを使用したFlyway dbの移行

# 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 

理想的には私は私がローカルプロファイルにいる間、私は後に生産上の同じファイルを再利用できるようにバージョン移行を毎回実行するようにフライウェイを設定したいと思います。 真実は、私がそれらの技術に非常に新しいので、それが正しい考え方であるかどうかはわかりません。

// File: FlywayConfig.java 

@Configuration 
@Order(Ordered.LOWEST_PRECEDENCE) 
@Import(FlywayAutoConfiguration.FlywayConfiguration.class) 
public class FlywayConfig { } 

答えて

1

あなたはこのようにフライウェイの設定を上書きすることができます

@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; 
} 
を使用することができます
関連する問題