CakePHP的数据库表,缺少缺省数据源(CakePHP database table, missi

2019-07-19 08:26发布

我发现这个类似的问题,但我的问题是不同的。

我动了我的CakePHP的2.2应用到另一台服务器。 存在迁移之前没有问题。 大部分的东西迁移后工作正常。 我能达到我的大部分数据库表等,但是当我试图达到我的表之一,我得到这个错误:

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

为了解决这个问题,我检查这个文件夹:“/应用程序的/ tmp /缓存/模型”

在该文件夹中有我的每个表的文件

  • myapp_cake_model_default_mydatabase_table1
  • myapp_cake_model_default_mydatabase_table2
  • myapp_cake_model_default_mydatabase_table3等。

但对于统计数据表中没有任何文件。 它可以是问题吗? 或者,我该怎么解决这个问题?

(许可 “/应用程序的/ tmp /缓存/模型” 文件夹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"
));

Answer 1:

你检查你的数据库,例如在phpMyAdmin或MySQL工作台? 是否数据库中的表是否存在?

该错误消息表示,该表不能使用默认的连接来访问。 这有可能是该表确实丢失,或者用户您正在使用连接到数据库中没有该表的正确的权限。

如果你从另一台服务器迁移的数据库,弄来错误信息,同时导入? 如果你没有创建封闭在一个事务转储,它有可能是数据库转储只是部分进口。

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

从删除所有文件app/tmp/cache/persistent/app/tmp/cache/models ,然后启用调试。 你的SQL日志/调试应显示CakePHP是使用,如果在数据库中存在的表来检测查询。 你也可以检查是否蛋糕写到tmp文件,没有问题



文章来源: CakePHP database table, missing datasource default