Flyway は複数人での開発に向かないという誤解について

というように、Flyway は複数人開発に向かないという噂をたまに聞くのですが、多分誤解です。

誤解が生まれるのは公式ドキュメントで Flyway のマイグレーションスクリプトのファイル名として、V1__Add_new_table.sql みたいなファイル名が例に出されており、これが V2__V3__ のような名前をつける必要があるという印象を与えるためかと思われます。

ドキュメントを良く読むと、バージョンのルールは

  • One or more numeric parts
  • Separated by a dot (.) or an underscore (_)
  • Underscores are replaced by dots at runtime
  • Leading zeroes are ignored in each part

なので、もう少し柔軟です。だから rails のようにタイムスタンプベースのファイル名付けちゃえば良いです。

sql
├── V20150127114055__create_user_table.sql
├── V20150127114322__add_country_column.sql
└── V20150127114323__add_age_column.sql

このようにタイムスタンプベースのバージョン付けを行うとブランチをマージしたときなどに順番が狂うという問題が発生しますが、 outOfOrder という設定があるのでこいつを on にしてやれば OK です。

WEB+DB PRESS VOL.84 の Flyway の記事にもなかったので書いてみました。