Какова альтернатива метода flyway.setSchemas (), поскольку это устарело? - PullRequest
3 голосов
/ 26 апреля 2019

У меня мультитенантное приложение, и для выполнения миграции БД я должен пройтись по каждой схеме арендатора и перенести ее, но когда я использую flyway.setSchema() в своем коде, он выдает предупреждение об устаревании.

Какая у него альтернатива?

List<String> schemas = getExistingTenants();

for(int i=0;i < schemas.size(); i++)
{
Flyway flyway = Flyway.configure().dataSource(dataSource).load();
                    flyway.setSchemas(schemas.get(i));
            flyway.migrate();
}

Ответы [ 2 ]

2 голосов
/ 26 апреля 2019

Правильный способ - сделать это для объекта FluentConfiguration так же, как вы уже делаете для конфигурации dataSource:

Flyway flyway = Flyway.configure()
        .dataSource(dataSource)
        .schemas(schemas.get(i))
        .load();
flyway.migrate();

Это также задокументировано в Flyway.setSchemas:

устарело: прямая конфигурация объекта Flyway устарела и будет удалена в Flyway 6.0. Вместо этого используйте Flyway.configure ().

См. Также выпуск 1928 .

2 голосов
/ 26 апреля 2019

Согласно Flyway.setSchemas

Прямая настройка объекта Flyway устарела и будет быть удаленным в Flyway 6.0. Вместо этого используйте Flyway.configure().

В вашем случае это будет что-то вроде:

List<String> schemas = getExistingTenants();

for(int i = 0; i < schemas.size(); i++) {
    Flyway flyway = Flyway.configure().dataSource(dataSource)
                          .schemas(schemas.get(i)) // <-- configure schemas here using the
                          .load();                 // FluentConfiguration object's method
    flyway.migrate();                              // `schemas(String... schemas)`
}

См. Также: FluentConfiguration.schemas(String... schemas).

...