6

この同様の質問を見つけましたが、私の問題は異なります。

CakePHP 2.2 アプリケーションを別のサーバーに移動しました。移行前は問題ありません。移行後、ほとんどのものは正常に動作します。データベーステーブルなどのほとんどに到達できますが、テーブルの1つに到達しようとすると、次のエラーが発生します:

"Error 500: Table stats for model Stat was not found in datasource default."

これを解決するために、「/app/tmp/cache/models」フォルダーを確認しました。

そのフォルダーには、各テーブルのファイルがあります

  • myapp_cake_model_default_mydatabase_table1
  • myapp_cake_model_default_mydatabase_table2
  • myapp_cake_model_default_mydatabase_table3 など..

ただし、統計テーブル用のファイルはありません。それが問題になる可能性はありますか?または、どうすればこれを解決できますか?

(「/app/tmp/cache/models」フォルダのパーミッションは755)

Database.phpには次のものがあります。

public $default = array(
    'datasource' => 'Database/Mysql',
    'persistent' => false,
    'host' => 'localhost',
    'login' => 'myuser',
    'password' => 'mypass',
    'database' => 'mydatabase',
    'prefix' => '',
    'encoding' => 'utf8',
);

編集:
thaJeztahの回答のコメントで指摘したように、app/tmp/cache/persistent問題が解決された内部のすべてのファイルを削除した後。CakePHP は新しいモデル キャッシュ ファイルを作成し、動作しました。1年後、私は本当の問題を発見しました。問題は、ケーキ モデル ファイルのクリア期間の設定でした。キャッシュのクリアを +999 日に設定したので、モデル ファイルは再生成されません。モデルを変更する際に、モデル キャッシュ クリアの値を低く設定できます。

Cache::config('_cake_model_', array(
    'engine' => "File",
    'prefix' => "myapp_". 'cake_model_',
    'path' => CACHE . 'models' . DS,
    'serialize' => ($engine === 'File'),
    'duration' => "+999 days"
));
4

2 に答える 2

27

phpMyAdmin や MySql ワークベンチなどでデータベースをチェックしましたか? テーブルはデータベースに存在しますか?

エラー メッセージは、デフォルトの接続を使用してテーブルにアクセスできなかったことを示しています。テーブルが実際に見つからないか、データベースへの接続に使用しているユーザーがそのテーブルに対する適切な権限を持っていない可能性があります。

別のサーバーからデータベースを移行した場合、インポート中にエラー メッセージが表示されましたか? トランザクションに含まれるダンプを作成しなかった場合は、データベース ダンプが部分的にしかインポートされていない可能性があります。

[更新]この提案は問題を解決しました。

からすべてのファイルを削除してからapp/tmp/cache/persistent/app/tmp/cache/modelsデバッグを有効にします。SQL ログ/デバッグは、テーブルがデータベースに存在するかどうかを検出するために CakePhp が使用しているクエリを表示する必要があります。また、Cake が問題なく tmp ファイルに書き込むかどうかを確認することもできます。

于 2013-02-05T21:00:44.310 に答える