データベースを直接編集してmigrationsコマンドが使えなくなった(汗)
(1)正攻法
> bin\cake migrations rollback
コマンドで戻す。必要であれば
> bin\cake migrations rollback -t 20170301063829
みたいに戻りたいバージョンを指定する
(2)先にDBのテーブルを削除してしまった場合
> bin\cake migrations rollback
しても、「お探しのテーブルがありません」みたいなエラーが出る。
DBのphinxlog テーブルに bin\cake migrations status で表示される履歴情報が格納されている。それを消して
> bin\cake migrations status
コマンドすると
Status Migration ID Migration Name
—————————————–
down 20170301063829 CreateUsers
down 20170301073829 CreateUserProfs
という感じで、ステータスがdownになっているので、この状態で
> bin\cake migrations migrate
とコマンドを入力すればOK!
マイグレーションファイルを編集して、migrations rollback → migrations migrate という手順でやれば問題なかったんだけど、先にデータベースを直接編集してテーブルを削除してしまったので、migrations rollback できなくなり、ちょっと焦った。
phinxlog テーブルのレコードを削除することで、事なきを得ました。
ちなみにCakePHP3のマイグレーションはPhinxというオープンソースを使っているので、CakePHP3のドキュメントを調べても埒が明かないときには、Phinxのドキュメントに当たってみるのもいいかも。
コメント