CakePHP数据库表,缺少数据源默认值

tra*_*nte 7 database cakephp model cakephp-2.0

我发现类似的问题,但我的问题不同了.

我将CakePHP 2.2应用程序移动到另一台服务器.迁移前没有问题.迁移后大多数工作都很好.我可以访问我的大多数数据库表等.但是当我尝试访问我的一个表时,我收到此错误:

"Error 500: Table stats for model Stat was not found in datasource default."
Run Code Online (Sandbox Code Playgroud)

为了解决这个问题,我检查了这个文件夹:"/ app/tmp/cache/models"

在该文件夹中,每个表都有一个文件

  • myapp_cake_model_default_mydatabase_table1
  • myapp_cake_model_default_mydatabase_table2
  • myapp_cake_model_default_mydatabase_table3等.

但是stats表没有文件.这可能是问题吗?或者我该如何解决这个问题?

("/ 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',
);
Run Code Online (Sandbox Code Playgroud)

编辑:
正如我在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"
));
Run Code Online (Sandbox Code Playgroud)

tha*_*tah 26

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

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

如果从其他服务器迁移数据库,导入时是否收到错误消息?如果未创建事务中包含的转储,则可能仅部分导入了数据库转储.

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

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

  • 从app/tmp/cache/persistent和/ app/tmp/cache/models中删除所有文件,谢谢.删除缓存解决了我的问题 (6认同)
  • 在尝试了你的想法评论后(删除"app/tmp/cache/persistent"文件),Cake在持久目录中创建了正确的模型文件,一切正常.谢谢. (2认同)