【发布时间】:2012-11-17 10:02:07
【问题描述】:
我在 Eclipse 工作区的 2 个不同项目中创建了两个不同的 Flyway 实例。
它们指向不同的数据源/2 个差异数据库,并且还有单独的 src.main.resources.db.migration 包。每个包都包含各自数据库的不同 sql 文件。
当我启动我的应用程序时,Flyway 仅识别来自一个项目的脚本(首先初始化项目)并将脚本从这个项目执行到另一个数据库。
Flyway 是否可以同时更新 2 个数据库?
感谢您的回复。但是您能否解释一下如何在 Java 代码中实现这一点。 例如:目前我正在使用以下方式...
Flyway flyway = new Flyway();
InitialContext ictx = new InitialContext();
DataSource dataSource = (DataSource) ictx.lookup("DS-name");
flyway.setDataSource(dataSource);
flyway.setLocations("main.resources.db.migration");//location under first project
flyway.migrate();
Flyway flywaygen = new Flyway;
InitialContext ictx = new InitialContext();
DataSource dataSource = (DataSource) ictx.lookup("DS-name");
flywaygen.setDataSource(dataSource);
flywaygen.setLocations("main.resources.emlogis.migration");//location under second project
flywaygen.migrate();
问题是 flywaygen 也在寻找第一个项目位置。因此,如果在第一个位置添加了 3 个 sql 脚本,在第二个位置添加了 2 个脚本,则第二个 flyway 实例显示迁移 3 已完成。所以 flywaygen 也指向 main.resources.db.migration 而不是 main.resources.emlogis.migration。
【问题讨论】: