CakePHP3でMigrations を初めからやり直す方法

技術的なこと
この記事は約2分で読めます。

データベースを直接編集してmigrationsコマンドが使えなくなった(汗)

computer_server

(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のドキュメントに当たってみるのもいいかも。

コメント

タイトルとURLをコピーしました