Node.jsのMySQLとかのO/Rマッパーであるsequelizeのmigrationについてざっくりメモ。
何ができるの?
以下コマンドでmigrationsディレクトリ内にあるファイルを実行してmigrationしてくれる。
sequelize db:migrate
どんな仕組みで動いてるの?
どうもmigrations/[日付]-[適当な名前]-migration.jsもしくは一番若いファイル1つ実行するらしい(後者はバグな気がしないでもないが)。
とりあえず以下コマンドで作られたファイルに処理を書きましょう。
sequelize migration:create
これを実行すると、migrations/20150827083024-unnamed-migration.jsみたいなファイルが生成されます。
実際のmigrationではこれの日付が若い順に実行されます。
はまったこと
とりあえずここにファイル作ればいいからと言われてそれに倣ってmigrations/にファイルを作ったけど、なんか1つしかmigrationが走らなくて、うんうん唸ってた。
ググっても日本語の記事はヒットしないし、英語でnodeのsequelizeのmigrationでmigrationsディレクトリ以下のファイルが一つしか実行されない不具合についてみたいなググり方分からないしで結構つらかった。
ちなみにmigration失敗したとき戻す処理とかあるので、順番大事=ファイル名でちゃんと連番になる仕組みがないと詰むよねということで、命名規則には納得できるが、未だに1ファイルだけ実行された謎の現象があるので、そこについてはソースの中を調べないといけないかな。でも例え調べても正規手順でやれとしか言いようがないのでまぁいいかなと思ってます。以上。