我正试图在我的网络应用程序中使用Flyway。我读过文档,但找不到以下问题的答案:
在运行baselined之前,是否可以检查数据库是否为migrate
web应用程序已经使用了一个大型数据库。所以我需要运行baseline。我希望应用程序在启动时运行baseline和/或migrate。如果数据库不存在,则应该创建它;如果它存在,则应该是baselined,但以前它不是baselined。
我已经在迁移包中添加了3个SQL文件:
V4_0_0__schema.sql
V4_0_1__index.sql
V4_0_2__initial_inserts.sql我想这样做:
DataSource dataSource = new MysqlDataSource();
String[] locations = {"path/to/location"};
Flyway flyway = new Flyway();
flyway.setCleanDisabled(true);
flyway.setLocations(locations);
flyway.setDataSource(dataSource);
if (databaseExists()) { // how to determine that the db already exists?
if (databaseWasBaselined() == false) { // How to check this?
flyway.setBaselineVersion(MigrationVersion.LATEST); // will this set the version to 4_0_2?
flyway.baseline();
}
}
flyway.migrate();我需要一点帮助才能做好这件事。希望有人能把我引向正确的方向。
发布于 2017-11-15 05:08:45
使用baselineOnMigrate选项,如立交桥场地中所记录的
迁移时是否自动调用基线是针对没有元数据表的非空模式执行的。然后,在执行迁移之前,这个模式将以
baselineVersion为基础。只有在baselineVersion之上的迁移才会被应用。 这对于在具有现有DB的项目上的初始Flyway生产部署非常有用。 启用时要小心,因为它移除了安全网,以确保天桥不会在配置错误的情况下迁移错误的数据库!
https://stackoverflow.com/questions/47286983
复制相似问题