Apr 19, 2014
Apr 19, 2014
N/A Views
MD
warning
この記事は2年以上前に更新されたものです。情報が古くなっている可能性があります。

運用中の既存アプリに途中からFlywayを導入したいときのメモ。

導入するときに用意するSQLが以下のV1~V3、現在運用中のバージョンがV2相当だとする。

  • V1__Create_initial_tables.sql
  • V2__Insert_initial_data.sql
  • V3__Add_schema_for_OAuth2.sql

現在運用中のDBに対して、

$ mvn flyway:info

を実行すると、Flywayはまだ導入されていないので、↓のような結果になる。

+----------------+----------------------------+---------------------+---------+
| Version        | Description                | Installed on        | State   |
+----------------+----------------------------+---------------------+---------+
| 1              | Create initial tables      |                     | Pending |
| 2              | Insert initial data        |                     | Pending |
| 3              | Add schema for OAuth2      |                     | Pending |
+----------------+----------------------------+---------------------+---------+

いまV2相当なので、V1とV2は適用したくなくて、V3から適用したい。そういうときは↓を実行する。

$ mvn flyway:init -Dflyway.initVersion=2.1 -Dflyway.initDescription="Base Version"

そうするとmvn flyway:infoの結果はこうなる。

+----------------+----------------------------+---------------------+---------+
| Version        | Description                | Installed on        | State   |
+----------------+----------------------------+---------------------+---------+
| 1              | Create initial tables      |                     | PreInit |
| 2              | Insert initial data        |                     | PreInit |
| 2.1            | Base Version               | 2014-04-19 20:36:07 | Success |
| 3              | Add schema for OAuth2      |                     | Pending |
+----------------+----------------------------+---------------------+---------+

V2とV3の間にV2.1を割り込ませる格好となる。

$ mvn compile flyway:migrate

を実行すると、mvn flyway:infoの結果は

+----------------+----------------------------+---------------------+---------+
| Version        | Description                | Installed on        | State   |
+----------------+----------------------------+---------------------+---------+
| 1              | Create initial tables      |                     | PreInit |
| 2              | Insert initial data        |                     | PreInit |
| 2.1            | Base Version               | 2014-04-19 20:36:07 | Success |
| 3              | Add schema for OAuth2      | 2014-04-19 20:36:27 | Success |
+----------------+----------------------------+---------------------+---------+

となり、無事途中からFlywayの導入ができた。

Found a mistake? Update the entry.
Share this article: