我发现this类似的问题,但我的问题有所不同。

我将CakePHP 2.2应用程序移至另一台服务器。迁移之前没有问题。迁移后,大多数事情都可以正常工作。我可以访问大多数数据库表等。但是,当我尝试访问其中一个表时,出现此错误:

"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创建了新的模型缓存文件,并且可以正常工作。一年后,我发现了真正的问题。问题在于设置蛋糕模型文件的清除持续时间。我将清除缓存设置为+999天,因此不会重新生成模型文件。进行模型更改时,可以为模型缓存设置较低的值:
    Cache::config('_cake_model_', array(
        'engine' => "File",
        'prefix' => "myapp_". 'cake_model_',
        'path' => CACHE . 'models' . DS,
        'serialize' => ($engine === 'File'),
        'duration' => "+999 days"
    ));
    

    最佳答案

    您是否检查过数据库,例如在phpMyAdmin或MySql工作台中?该表是否存在于数据库中?

    该错误消息表明无法使用默认连接访问该表。该表可能确实丢失了,或者您用来连接数据库的用户对该表没有正确的权限。

    如果您从另一台服务器迁移了数据库,那么导入时是否收到错误消息?如果未在事务中创建转储,则数据库转储可能仅部分导入。

    [更新] 这个建议解决了这个问题;

    app/tmp/cache/persistent/app/tmp/cache/models中删除所有文件,然后启用调试。您的SQL日志/调试应显示CakePhp用于检测数据库中是否存在表的查询。您还可以检查Cake是否将tmp文件写入到文件中

    关于database - CakePHP数据库表,缺少默认数据源,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14716004/

    10-12 14:11
    查看更多