5

我也尝试谷歌搜索并在这里搜索答案,

问题

即使存在,CakePHP 也找不到表。

我尝试了什么:

  1. 清除缓存文件夹
  2. 验证表名和连接字符串。
  3. 添加 useTable = "urls"

编码

class Url extends AppModel {
    public function add_url($the_url,$the_content,$title) {
        $this->create();
        $this->set('url', $the_url );
        $this->set('content', $the_content );
        $this->set('title', $title );
        $this->save();
    }
} 

错误:

缺少数据库表

错误:在数据源默认值中找不到模型 Url 的表 url。

也许有人知道这个问题的答案?

4

2 回答 2

6

检查缓存问题

识别(或消除)缓存相关问题的一种方法是简单地禁用缓存

/**
 * Turn off all caching application-wide.
 *
 */
Configure::write('Cache.disable', true);

如果这解决了问题,那么有必要仔细看看为什么以前清除缓存的努力显然失败了。如果使用基于文件的缓存,请确保tmp删除下的所有文件,如果正在使用不同的缓存存储,请确保它实际上已被清除。

是否缺少一张桌子,或者根本没有报告任何桌子?

另一个相对常见的原因是数据库用户无权列出给定数据库中的表,这可以通过与模型相同的方式进行检查:

$db = ConnectionManager::getDataSource('default');
debug($db->listSources());
die;

如果根本没有列出任何表 - 检查连接凭据并确保例如没有与权限相关的问题。通过 cli 执行 CakePHP 正在执行的相同 sql并确保结果符合预期:

$ mysql -uuser -ppassword databasename
mysql> show tables from foo;
+-----------------+
| Tables_in_foo   |
+-----------------+
| posts           |
| urls            |
+-----------------+
2 rows in set (0.00 sec)

如果列出了表 - 然后双重、三重和四重检查连接凭据,因为相关代码按预期工作,并且缺少的表实际上并不存在于应用程序连接到的数据库中。

于 2013-10-08T15:19:52.093 回答
0

对于 cakephp 2.*:删除文件夹中命名myapp_cake_model_[Database Name]_list的文件app/tmp/cache/models将解决我的问题。

于 2019-11-19T11:16:17.167 回答