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_’);
広告
関連記事
-
Selenium2.0でUIテスト(2) -Rubyでやってみよう-
前回は、Selenium + PHPを試しました。 今後はRubyでやってみようということでSele
-
jQueryMobileでカレンダー表示 -DateBoxプラグインの利用-
スマートフォン対応をしているとカレンダーの表示の仕方をスマートフォンらしくしたいことがあると思います
-
iPhoneアプリ開発 -利用するべきサービス-
iPhone(iOS)アプリ開発において使っているサービスを列挙。 この手のサービスがないと、開発中
-
Selenium2.0でUIテスト(1) -まずはPHPでやってみる-
久しぶりにSeleniumを触ってみました。 Selenium2.0から色々と変わったみたいで少々
-
jQuery Mobile1.2のCollapsible Listsを試してみた -画像のカスタマイズについて-
8月1日にjQuery Mobile1.2 Alphaが出ました。 まだAlphaなので自
-
とりあえず動作させてみよう「PHP+OAuthでTwitterに投稿」(追記あり)
で自動でTwitterに投稿したいと思ったのでTwitter周りについて調べてみた。 *
-
Twitterでサービスにログイン -PHP(CakePHP1.3)で実践編-
以前、ソーシャルログインについて書きました。 ただ、Twitter連携にまだ触れてない人にはちょ
-
iPad(Retinaディスプレイモデル)にiOS7を入れてみた
iPadにiOS7を入れてみたので、その報告。 iPhone5にはまだ入れておかないでおこうと思っ
-
iPhoneアプリ開発 −2本指で画像を移動させる−
* やりたいこと 表示させている画像(UIImageView)を2本指で移動させたい。 ※1本指は別
-
jQuery Mobileの1.0Beta3、1.0RC1で起きた現象 -iOS5で動かない!?-
最近おきたjQuery Mobile周りについてのメモ。 本来なら色々チェックしてちゃんと原因を調
Comment
私もモデル・キャッシュではまった(>_<
はまった時を、思い出しました。