CakePHPのモデルのキャッシュではまった -新しく追加したカラムに値が入らない-
作業内容
- MySQLで、あるテーブルにカラムを追加。
- ソースを修正し新しいカラムに値が入るように記述。
- テスト環境(ローカル環境(Windows)/debug:2)で動作することを確認。
- ソースをコミット。
- プレ本番環境、本番環境を最新の状態に更新。
ここまでの流れは普通にあることだと思う。
発生事象
以下の事象が発生。
- プレ本番環境(CentOS/debug:0)、本番環境(CentOS/debug:0)と新しく追加したカラムにだけ値が入らない。
MySQLでエラーが出ているわけでもなく、正常に処理が出来ているものの値が入らない。
しかしテスト環境だけは問題なく値が入っている。
調査
疑った流れは以下。
1. カラムに入れるべき値がそもそも空なのでは?
明示的に指定してみたけど、値は入らず。
2. カラム名に問題がある?(そんなことはないはず)
どんなカラム名でも新規に追加したものは受け付けないみたい。
3. これはキャッシュか・・?
正解
対処方法
どうやら、app/tmp/cache/modelsの配下にテーブル構造を格納したモデルのキャッシュがあり、これが古いままだったので問題だった。
このキャッシュファイルを削除すれば、問題は解決。
じゃあ、なぜテスト環境だけ動作したのか?
このキャッシュファイルは永続的に残っているかというとそうではなくて、以下のようになっている。
- debugが0の時は999日
- debugが0以外の時は15秒
もし、カラムを追加した場合は以下の処理が必要になる。
Cache::delete(‘useDbConfig名_テーブル名’,’_cake_model_’);
広告
関連記事
-
MacBook ProにGitのインストール
MacBook ProにGitをインストールしようと思いたち、思ったより手間取ってしまったので備忘録
-
Twitterでプロテクトをかけているユーザが投稿したステータスを取得する方法
* 前提 ID Twitterの各投稿にはIDが存在していています。 そのIDを元にステータス
-
iPhoneアプリ開発 - touchesBeganとUITapGestureRecognizerの差(タッチとタップ) –
「画面にある画像を移動させたい」とか、「画面に線を書きたい」ということがあるかと思います。 ぐぐると
-
Selenium2.0でUIテスト(1) -まずはPHPでやってみる-
久しぶりにSeleniumを触ってみました。 Selenium2.0から色々と変わったみたいで少々
-
研究室での進捗報告の方法について、ふと思ったこと
* 以下に加筆・修正して移動しました。
-
iPhoneアプリ開発 芳名帳アプリ作成(6) -写真に保存-
* 今までの流れ - -[http://pplace.jp/2013/06/1531/:title=
-
iPhoneアプリ開発 芳名帳アプリ作成(2) -記帳画面作成-
* 今までの流れ - * 画面構成 今回の芳名帳アプリは以下の画面で構成しています。 -
-
Androidアプリ開発 -画像処理をC言語で高速化-
* 画像を扱う際の問題(1):計算処理の遅さ 前回、セピア画像にする方法を書きました。
-
Androidアプリ開発 -画像を加工してセピア色にしてみる-
* やりたいこと ギャラリーから選んだ画像を加工してセピア色にしたい * ソース ** 画像を取得
-
Capistranoで簡単デプロイ -開発用サーバー編-
cakePHPを使って開発しているサービス()で、リリース周りを楽にしたいなと思いCapistran
Comment
私もモデル・キャッシュではまった(>_<
はまった時を、思い出しました。