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