プロダクション環境に置いたCakePHP2.2のプログラムを書き換えて、新しいテーブルを追加し、新しいモデルを追加しようとしました。
しかしながら、テーブルがないというようなエラーが出ました。
Table graphs for model Graph was not found in datasource default.
テーブルは追加されているがエラーが出る
テーブルは確かに追加しました。
create table if not exists graphs (
id int unsigned primary key auto_increment,
user_id int unsigned not null,
name varchar(64) not null,
public boolean not null,
created timestamp not null,
modified timestamp not null
) engine=innoDB default charset=utf8;
でも毎回エラーが出る。
デバッグモードでない場合はテーブル定義がキャッシュされている
どうやら最近のCakePHPは、しっかりキャッシュが作りこまれているらしく、テーブル定義の取得処理を何度も走らせないようです。
Config/core.phpにdebugレベルの設定がありますが、これが0、要するにプロダクション用のモードになっていると、テーブルを追加してもテーブル定義のキャッシュが優先されてしまうようです。
モデルのキャッシュディレクトリを削除
そういうわけで、モデルのキャッシュ情報を削除してやれば、キャッシュが再構築されます。
rm app/tmp/cache/models/*
サービスを稼働させながらテーブルを追加しようという場合は注意が必要です。
コメント