flyway не создает схему после создания начальных схем

#spring-boot #flyway

Вопрос:

Я использую flyway-core 7.15.0 и spring-boot 2.4.11. Вот конфигурация взлетно-посадочной полосы в файле application.properties

 spring.flyway.schemas=schema1,schema2
spring.flyway.table=schema_version
spring.flyway.out-of-order=true
spring.flyway.ignore-missing-migrations=true
 

кроме того, у меня есть этот боб

 @Autowired
private ApplicationArguments appArgs;

@Bean
public FlywayMigrationStrategy cleanMigrateStrategy() {
    return flyway -> {
        if (appArgs.containsOption("flywayClean")) {
            flyway.clean();
        }
        if (appArgs.containsOption("flywayRepair")) {
            flyway.repair();
        }
        flyway.migrate();
    };
}
 

Все работает нормально, но когда я добавил еще одну подобную схему и перезапустил приложение, эта новая схема не создается.

 spring.flyway.schemas=schema1,schema2,schema3
 

Кто-нибудь знает, почему не добавляется схема 3, которая была добавлена после первого запуска?

Ответ №1:

В текущей версии — 7.x и бета — версии v8 — проверка создания схем выполняется только в «чистой» базе данных, то есть таблица истории схем не была создана, следовательно, если вы запустили последовательность миграций и изменили schemas параметр, добавив дополнительный, он никогда не будет создан. (Строго говоря, только в том случае, если schemas параметр не изменился таким образом, чтобы изменить подразумеваемое расположение таблицы истории!)

Я поставлю этот вопрос перед командой для рассмотрения. https://github.com/flyway/flyway/issues/3296

Комментарии:

1. Спасибо Джулии Хейворд за ваш ответ. Я буду следить за этим вопросом. В коде я обнаружил, что эта часть добавляется там, где она проверяет, не существует ли схема, которую затем создает, но кажется, что она добавлена по другой причине. github.com/flyway/flyway/blob/…