ここによるとModelが存在しないテーブルのmigrationは以下のように-fをつけてあげるとできる。これをつけないと、差分として検知されない。
ここでは例えば、Aというテーブルを作成した場合とする。
①
cake Migrations.migration generate -f
このコマンドから始まるプロンプトを進めて行くと、以下のように
②
Do you want update the schema.php file? (y/n)
schema.phpを更新するか聞かれて、自分はいつも通り、yを選択する。
で、次にDB定義変更をしてmigrationをする機会が訪れたとする。
今度は普通にModelが存在するテーブルBだったので、以下のように-fはつけない。
③
cake Migrations.migration generate
そうすると何が起こるかというと、①で作成したテーブルAをdropするmigrationが作成されてしまう。
なぜかというと、②でも-fが有効になっているらしく、ここで生成されるschema.phpにはテーブルAが入ってしまう。migrationの仕組みは現実のDB定義とschema.phpを比較して差分をmigrationファイルとする。なので、③で-fをつけないのからモデルのないテーブルは検知されないため、schema.phpにあるAテーブルは、現実のDBには存在しないよ、となり、じゃあ削除するマイグレーションファイル作りますね、と判断してしまうのだ。
イケてないですね。
なので、 -fをつける場合は②はnを選択したほうがよさそうですね。
0 件のコメント:
コメントを投稿