CodeIgniter和Doctrine:找不到基表或视图

时间:2010-10-14 19:50:04

标签: php mysql codeigniter doctrine mysql-error-1146

我几乎是逐字跟随the documentation,除了我认为是更正的两项调整。

首次调整:我消除了DIRECTORY_SEPARATOR中的多余system/application/doctrine.php

//this produces "...system/application//fixtures"
$config = array('data_fixtures_path'  =>  dirname(__FILE__) . DIRECTORY_SEPARATOR . '/fixtures',

//Replaced with:
$config = array('data_fixtures_path'  =>  dirname(__FILE__) . DIRECTORY_SEPARATOR . 'fixtures',

结果路径显示正确。

第二次调整:生成的模型(例如models/User.php)似乎没有加载扩展Doctrine_Record的基本模型,因此我为每个模型添加了一个明确的require()调用,如此:

require('generated/BaseUser.php');

class User extends BaseUser { ... }

所以,我当前的问题:当第一次构建表时:

$ ./doctrine build-all-reload
build-all-reload - Are you sure you wish to drop your databases? (y/n)
y
build-all-reload - Successfully dropped database for connection named 'mydb'
build-all-reload - Successfully created database for connection named 'mydb'
build-all-reload - Created tables successfully
SQLSTATE[42S02]: Base table or view not found: 1146 Table 'mydb.user' doesn't exist

Doctrine似乎很高兴地清空表,删除表,删除数据库和创建数据库,但我无法弄清楚为什么它不会创建表。它清楚地说Created tables successfully,但是SHOW TABLES;返回“数据库中没有找到表格。”

Doctrine正在使用与我相同的MySQL用户,该用户具有ALL PRIVILEGES

为什么Doctrine无法创建表格的任何想法?希望我只是盲目和/或愚蠢。

或者,我是否可以根据我自己运行的yaml模式生成SQL CREATE语句文件来调试此问题?

2 个答案:

答案 0 :(得分:0)

在这种特定情况下,也许表名“user”可能是一个原因。尝试为表格设置其他名称。

答案 1 :(得分:0)

也许你已经完成了但没有提到它,但你 MAY 缺少所有必需的“加载”命令。使用require不是最佳解决方案。

Doctrine_Core::loadModels(realpath(dirname(__FILE__) . '/..') . DIRECTORY_SEPARATOR . 'models');

对于包含与Doctrine相关的模型文件(模型,基本模型,表格......)的每个目录,都需要这样做,因为它不能递归地工作。我遇到了同样的问题,为我的每个目录定义loadModels就可以了。