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にあります。

根本 大幹

最新記事 by 根本 大幹 (全て見る)
- unite.vimを使ってみた - 2014年2月13日
- Rails3 バリデーション - 2014年2月7日
- Rails3 CSV出力をしてみる - 2014年2月7日