CakePHP2用のMigrations Pluginについて

CakePHP2用のMigrations Pluginについて

tanakaです。関東に引っ越してから数年間、自転車などの移動手段がなく、徒歩か電車での移動だったのですが、不便で、外出が面倒になってたので(…という口実で)クロスバイクを買いました。軽快にこぐことができるので、移動するのが楽しくなりますね!

今日は最近CakePHP2.x用のMigrations Plugin (データベース・スキーマの変更管理システム)を使っていて、CakePHP1.3用のを使ってみたと比べてみて気づいた点を紹介します。

良くなった点

マイグレーションスクリプト生成後に、scheme.phpを更新するか尋ねるようになった

マイグレーションスクリプトの作成作業は次のような手順で行います。

  1. 現在のスキーマの状態をschema.phpとしてダンプする ( cake schema generate )
  2. (新しくテーブルを作成する場合は)モデルファイルを作成しておく
  3. 好きなツールを使ってスキーマを変更する(mysqlコンソールとかphpMyAdminとか)
  4. 「cake Migrations.migration generate」コマンドを実行して1つずつ質問に答える

このとき、一番最初の、ダンプしておく作業を忘れると、生成するマイグレーションファイルに前回の修正も入ったりして、作り直すのが大変になります。最新のバージョンでは、「cake Migrations.migration generate」コマンド実行の最後に、schema.phpを更新するか聞かれるので、このミスをしにくくなりました

マイグレーションスクリプト生成直前に内容を確認できるようになった

ファイルが生成される前に確認できるので、「モデルを作るのを忘れてた〜」といったミスがしにくくなってます。

ファイル名の最初にUnix Timeが付くのでファイラで順番にソートできる

細かいポイントですが。

ちょっと不便な点

MySQLで、INTEGER型のカラムをVARCHAR型に変えようとするとスクリプト実行時にエラーになる

こちらは、マイグレーションスクリプトの生成は問題ありませんが、up/down 実行時にエラーになります。苦肉の策として、同名のカラムの drop_field と create_field を書く(drop_fieldを配列の先に書く)といいです。データを引き継がないといけない場合は使えない策ですが…

やっぱりモデルを作成しておかないと、生成するマイグレーションに反映されない

モデル自体はファイルを作成しなくてもCakeアプリからテーブルを利用することはできるので、ちょっと不便かな、と思います。

まとめ

CakeDC(CakePHPの開発をリードしている会社)製の Migrations Pluginは、単にCakePHP2に対応できているだけではなく、使うときの落とし穴が減って改善されてます。また、余談ですが最近、不具合に遭遇しました。33文字以上の概要をマイグレーションファイルのクラス名にすると、up/downコマンド実行時にこけるというものです。(変更履歴テーブルのカラム長が33文字だったので実行したスクリプト名が完全に保存できなかった)リポジトリの最新では直っているようです。

  • このエントリーをはてなブックマークに追加

この記事を読んだ人にオススメ