CakePHP表即使存在也会丢失

时间:2013-10-08 13:53:16

标签: php cakephp

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

问题

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

我尝试了什么:

  1. 清除缓存文件夹
  2. 验证表格的名称&连接字符串。
  3. 添加useTable =“urls”
  4. 代码

    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的表网址。

    也许有人知道答案吗?

2 个答案:

答案 0 :(得分:6)

检查缓存问题

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

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

如果这样可以解决问题,那么有必要仔细研究为什么以前清除缓存的努力显然失败了。如果使用基于文件的缓存,请确保删除tmp下的所有文件,如果使用其他缓存存储,则确保它实际被清除。

是否缺少一个表,或者根本没有报告表?

所描述内容的另一个相对常见原因是数据库用户无权列出给定数据库中的表,可以采用相同的方式检查a model does it

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

如果根本没有列出表 - 请检查连接凭据并确保例如没有与权限相关的问题。通过cli执行the same sql that CakePHP is executing并确保结果符合预期:

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

如果列出了 个表 - 那么double,triple和quadruple会检查连接凭据,因为相关代码正在按预期工作,并且缺少的表实际上并不存在于应用程序的数据库中正在连接。

答案 1 :(得分:0)

对于cakephp 2. *:在我的情况下,删除文件夹myapp_cake_model_[Database Name]_list中名为app/tmp/cache/models的文件即可解决问题。