flyway outOfOrder 未按预期工作

eri*_*ood 6 flyway

我正在尝试在“生产支持”分支(即 V3.1)上使用 maven 应用 outOfOrder 迁移。3.1 分支有 12 次迁移,从 3.1.0.1 到 3.1.0.12。前 11 个已经应用,在我的开发环境中,我已经应用了下一个版本 3.3 的两个迁移。信息如下所示:

+----------------+----------------------------+--- ------------------+----------+
| 版本 | 说明 | 安装在 | 状态 |
+----------------+----------------------------+--- ------------------+----------+
| 1 | > | 2013-08-16 16:35:22 | 成功 |
| 3.1.0.1 | CCI DDL | 2013-08-16 16:41:04 | 成功 |
| 3.1.0.2 | 更新 1 | 2013-08-19 12:17:43 | 成功 |
| 3.1.0.3 | 添加 SVT 项目历史 | 2013-08-21 16:24:28 | 成功 |
| 3.1.0.4 | 从 ED 删除 Col 事件密钥 | 2013-08-27 14:15:36 | 成功 |
| 3.1.0.5 | 添加作业开始时间 COL | 2013-10-10 14:59:14 | 成功 |
| 3.1.0.6 | 更新 SVT 列长度 | 2013-10-23 10:25:33 | 成功 |
| 3.1.0.7 | 将序列号添加到 EDC ECRF | 2013-12-03 14:59:31 | 成功 |
| 3.1.0.8 | 设置 EDC ECRF ITEM Seq Numb | 2013-12-03 15:27:08 | 成功 |
| 3.1.0.9 | 添加表 EDC USV 表格 | 2013-12-03 15:37:47 | 成功 |
| 3.1.0.10 | 添加表 SVT USV 表格地图 | 2013-12-03 15:52:24 | 成功 |
| 3.1.0.11 | 添加表格 主题访问 Q | 2014-04-29 17:09:13 | 外购 |
| 3.1.0.12 | 添加表 BOGUS ERIC 测试 | | 忽略 |
| 3.3.0.1 | 插入 iMedidata CRS 信息 | 2014-04-24 10:50:38 | 未来 |
| 3.3.0.2 | 插入研究对象类型 | 2014-04-24 11:14:37 | 未来 |
+----------------+----------------------------+--- ------------------+----------+

我在 V3.1 分支的 mvn build 输出文件夹中运行以下命令: mvn flyway:migrate -Dflyway.outOfOrder=true -P

我得到以下输出:

[错误] 无法在项目 mdmws 上执行目标 org.flywaydb:flyway-maven-plugin:3.0:migrate (default-cli): org.flywaydb.core.api.FlywayException:验证失败。发现应用迁移和可用迁移之间的差异:检测到类路径上缺少应用迁移:3.3.0.1 -> [帮助 1]

似乎想在同一个classpath target/db/migrations文件夹中找到已经应用到数据库的3.3迁移,但是当然这些文件存在于更高版本的分支中。要么我缺少一些配置设置,要么我不明白 outOfOrder 的工作方式。我不想将这些文件从 V3.3 分支拉回 V3.1 分支。

有人可以帮忙解释一下吗?

我的 pom 从父 pom 继承了以下内容,并且大多数配置值都是从配置文件中传入的:

      <groupId>org.flywaydb</groupId>
      <artifactId>flyway-maven-plugin</artifactId>
      <version>3.0</version>

    <configuration>
      <driver>${flyway.driver}</driver>
      <url>${flyway.url}</url>
      <user>${flyway.user}</user>
      <password>${flyway.password}</password>
      <outOfOrder>${flyway.outOfOrder}</outOfOrder>
    </configuration>
    <dependencies>
      <dependency>
        <groupId>com.oracle.ojdbc</groupId>
        <artifactId>ojdbc6</artifactId>
        <version>11.2.0.3</version>
      </dependency>
    </dependencies>
  </plugin>
Run Code Online (Sandbox Code Playgroud)

Axe*_*ine 3

设置validateOnMigrate为 false 应该没问题。默认情况下,它将检查已解析的迁移和已应用的迁移是否匹配。在您的具体情况下,这不起作用,因此您必须禁用它。