我几乎逐字逐句地关注文档,除了我认为是更正的两项调整。
第一次调整:我消除了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 语句文件,我可以自己运行来调试这个问题?