不推荐使用flyway.setSchemas()方法的替代方法是什么?

时间:2019-04-26 11:54:43

标签: java flyway deprecation-warning

我有多租户应用程序,并且要进行数据库迁移,我必须遍历每个租户架构并进行迁移,但是当我在代码中使用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 个答案:

答案 0 :(得分:2)

根据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)

答案 1 :(得分:2)

正确的方法是对FluentConfiguration对象执行此操作,就像您已经对dataSource配置所做的操作一样:

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

这也记录在Flyway.setSchemas上:

  

已弃用:不建议使用Flyway对象的直接配置,并将在Flyway 6.0中将其删除。改用Flyway.configure()。

另请参阅issue 1928