2010-10-14 84 views
0

我几乎一字一句地遵循着the documentation,除了我认为是纠正的两个调整。CodeIgniter和Doctrine:基表或视图没有找到

第一调整:我消除system/application/doctrine.php冗余DIRECTORY_SEPARATOR

//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 

学说似乎高兴地空表,删除表,删除数据库和创建数据库,但我想不通为什么它赢得't 创建表。它清楚地说Created tables successfully,但SHOW TABLES;返回“没有在数据库中找到表”。

学说正在使用与我相同的MySQL用户,其中有ALL PRIVILEGES

任何想法为什么学说不能创建表?希望我只是失明和/或愚蠢。

另外,有没有我的方式,我可以只生成一个SQL CREATE语句文件的基础上我的yaml架构或模型,我可以自己运行调试此问题?

回答

0

也许你已经做了,但没有提及它,但你可能缺少所有需要的“加载”命令。在这里使用require并不是最好的解决方案。

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

这需要每个持有主义相关的模型文件(模型,basemodels,表,...),因为它不递归工作目录要做。我有同样的问题,并为我的每个目录定义loadModels做了窍门。

+0

这就是解决方案......主义不了解基本模型。 'require'根本行不通。 – Dolph 2010-11-01 14:40:28

0

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

+0

好吧,我只是试过'$ this-> setTableName('asdf');'并且没有找到基表或视图:1146表'mydb.asdf'不存在'。该数据库仍然没有任何表。 – Dolph 2010-10-14 20:26:08

+0

尝试执行任务./doctrine build-sql(我不记得确切的名字)。它使用普通的sql生成文件,这会创建表格。接下来你将能够决定它是否在SQL或教条中是错误的。 – 2010-10-15 06:09:31

+0

它生成'sql/schema.sql'这是一个空文件...奇怪,因为它显然意识到我的yaml和模型? – Dolph 2010-10-15 14:20:23

相关问题