0

我几乎逐字逐句地关注文档,除了我认为是更正的两项调整。

第一次调整:我消除了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 语句文件,我可以自己运行来调试这个问题?

4

2 回答 2

0

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

于 2010-10-14T20:18:55.190 回答
0

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

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

这需要对每个包含 Doctrine 相关模型文件(模型、基本模型、表......)的目录进行,因为它不能递归工作。我遇到了同样的问题,并且loadModels为我的每个目录定义都可以解决问题。

于 2010-10-16T05:44:55.753 回答