CakePHPではパフォーマンス向上のため、app/tmp/cacheにキャッシュファイルを持っている。
core.phpのデバッグレベルを0にした状態で、テーブル定義を変更すると、テーブル定義のキャッシュと不整合のためエラーになる場合がある。
デバッグレベルを0にした状態(本番環境)でテーブル定義を変更した場合の対策をまとめる。
1.デバッグレベルを1以上にしてアクセス
デバッグレベルを1以上の場合、都度キャッシュファイルが書き換わるので。
2.app/tmp/cache配下のキャッシュファイルを削除
まんまキャッシュファイルを削除
3.キャッシュファイル削除用のコンソールを作成実行
デプロイ時にコンソールを実行してキャッシュを削除する。
自分のところではこれを採用している。
class CacheClearShell extends AppShell {
function main(){
$config_list = Cache::configured();
foreach ($config_list as $value) {
Cache::clear(false, $value);
}
clearCache();
}
}