こんな感じの時、間に差し込みバージョンを作る。
+------------+-----------------+---------------------+---------+ | Version | Description | Installed on | State | +------------+-----------------+---------------------+---------+ | 1.0 | init | 2017-01-01 10:00:00 | Success | | 2.0 | add2 | 2017-01-02 10:00:00 | Success | | 3.0 | add3 | 2017-01-03 10:00:00 | Pending | +------------+-----------------+---------------------+---------+
flyway:infoすると、ignoredとして認識される。
+------------+-----------------+---------------------+---------+ | Version | Description | Installed on | State | +------------+-----------------+---------------------+---------+ | 1.0 | init | 2017-01-01 10:00:00 | Success | | 1.1 | patch1 | 2017-01-02 10:00:00 | Ignored | | 2.0 | add2 | 2017-01-02 10:00:00 | Success | | 3.0 | add3 | 2017-01-03 10:00:00 | Pending | +------------+-----------------+---------------------+---------+
この状態でflyway:migrateすると、エラーになる。
[ERROR] Failed to execute goal org.flywaydb:flyway-maven-plugin:3.2.1:migrate (default-cli) on project shotaki: org.flywaydb.core.api.FlywayException: Validate failed. Detected resolved migration not applied to database: 1.1 -> [Help 1]
outOfOrderオプションをtrueにして実行すると、Ignoredも含めて実行してくれる。
Mavenプラグインのコマンドラインで直接指定だと下記のような感じ。
mvn flyway:migrate -Dflyway.outOfOrder=true
この方法で実行すると、当該バージョンとそれ以降で適用済だったバージョンのStateがOutOrdrになる。
+------------+-----------------+---------------------+---------+ | Version | Description | Installed on | State | +------------+-----------------+---------------------+---------+ | 1.0 | init | 2017-01-01 10:00:00 | Success | | 1.1 | patch1 | 2017-01-02 10:00:00 | OutOrdr | | 2.0 | add2 | 2017-01-02 10:00:00 | OutOrdr | | 3.0 | add3 | 2017-01-03 10:00:00 | Success | +------------+-----------------+---------------------+---------+