2017-02-18 10 views
0

Я начинаю свое первое приложение springFW, и я хотел создать серию файлов миграции Flyway с версией для будущего использования. Сейчас я использую локальный профиль, и каждый раз, когда я запускаю приложение, я бы хотел сбросить и воссоздать все таблицы, но как только я это сделаю, у меня, похоже, проблема с Flyway, так как файлы с версией для перенастройки версий будут работать только один раз.Перенос миграции db с Hibernate create-drop

# 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; 
}