【问题标题】:Why does Flyway's Validate ignore missing files?为什么 Flyway 的 Validate 会忽略丢失的文件?
【发布时间】:2016-06-29 06:06:52
【问题描述】:

当我启动我的应用程序以迁移数据库时,我使用 Flyway 的 migrate。默认情况下,validateOnMigrate 处于启用状态,如果已应用的文件发生更改,validate 会报告错误。

到目前为止一切顺利,但它似乎忽略了已应用文件丢失的情况。

其次,如果架构包含比可用的最新版本更新的迁移,则 migrate 会记录警告但也不会失败,例如:

Schema xxx 的版本 (1.1.1) 比最新版本更新 可用迁移 (1.0.1) !

有没有办法防止这种行为?我想要failIfMigrationIsMissingfailIfSchemaIsNewer 之类的选项。

所有这些都有助于确保没有人在较新的数据库之上安装或启动旧版本,例如降级。实际上我认为这将是默认行为,还是我在这里错过了什么?

【问题讨论】:

标签: flyway


【解决方案1】:

这是一个适用于 flyway 4.0.3 的方案。如果您的版本控制更复杂,您可以检查所有迁移。

flyway.migrate();
MigrationInfoService migrationInfoService = flyway.info();
MigrationInfo[] applied = migrationInfoService.applied();
MigrationInfo last = applied[applied.length - 1];
if (MigrationState.FUTURE_SUCCESS.equals(last.getState())) {
    throw new Exception("Database downgrade detected.");
}

【讨论】:

    猜你喜欢
    • 2016-04-28
    • 1970-01-01
    • 2022-07-14
    • 1970-01-01
    • 2014-06-15
    • 2017-09-06
    • 1970-01-01
    • 1970-01-01
    • 2020-12-10
    相关资源
    最近更新 更多