もふもふ技術部

CakePHPのマイグレーション


CakePHPで開発をしているときハマったので、実行手順を含めメモ。

環境
CentOS 6
PHP-5.4.11
CakePHP 2.2.7
MySQL 5.5

※Migrationを利用するためのプラグインの導入については省略。

1.まず、カレントディレクトリをapp(作成するすべてのアプリケーションファイルがここにある)にする。

2.マイグレーションの雛形の作成
2-1.コマンド「./Console/cake Migrations.migration generate」を入力する
・モデルが存在しない場合は、引数に-fを付ける必要があります。
「./Console/cake Migrations.migration generate -f」

○エラーパターン
 ・phpのパスが不正のためエラーになる
 →/Console/cake を開いて40行目付近を見ると、phpのbinパスを指定するところがあるので、適宜変更を行う。

  phpが /usr/local/ にあれば、
 exec /usr/local/php-5.4.11/bin/php -q “$CONSOLE”/cake.php -working “$APP” “$@”

こんな感じです。

 ・ディレクトリが存在しなくてエラー
 →コンソールに「models」や「persistent」についてのエラーが吐き出されていたら、
 フォルダがないので作る。
「/mebocan_pe/app/tmp/cache」以下のフォルダの作成

・Permission Error
tmpフォルダの権限がないために起こることがよくあるらしいです。
tmpフォルダ以下の権限を777とかにして対処します。
コマンド「chmod 777 フォルダ名/ファイル名」

2-2.ファイル名を入力する
・Config/MigrationにMigrationファイルが作成される。

3.マイグレーションファイルの編集
migration変数の中にマイグレーションの定義を記述する。

4.マイグレーションの実行
4-1.コマンド「./Console/cake Migrations.migration run all -p」を入力する。
・MySQLにマイグレーションした内容が登録されていることが確認できる。

○エラーパターン
・一度マイグレーションした後、登録されたテーブルを見てやっぱり変更したいと思って
  マイグレーションファイルを変更し、マイグレーションの実行を行っても反映されない。テーブルが見つからないとかエラーが出たりする。
・以下を確認して解決した
1.mysqlの現在使用しているDBの中のschema_migrationsというテーブルがあるので、その中身を見てみる。すると、マイグレーションしたファイル名が登録されている。
2.マイグレーションしたファイル名のテーブルを削除してみる
3.マイグレーションの実行をする

5.スキーマの更新
5-1.コマンド「./Console/cake schema generate -f」を入力する。
5-2.「o」と入力すると、マイグレーションした内容がschema.phpに反映される。
・schema.phpは、/Config/Schemaにあります。

The following two tabs change content below.
根本 大幹

根本 大幹

社会人2年目。 今までブログ書いたことありません! 勉強は明日からがんばる。
根本 大幹

最新記事 by 根本 大幹 (全て見る)