Symfony 学说::build 任务无法创建名为 order 的表

Ben*_*ier 2 mysql doctrine symfony1

我有一个数据库,其中有一个名为 的表order。当我运行时php symfony doctrine:build --all,出现以下错误:

SQLSTATE[42000]: 语法错误或访问冲突: 1064 您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解在第 1 行的 'order (id BIGINT AUTO_INCRMENT, status VARCHAR(255), colissimonumber VARCHAR(25') 附近使用的正确语法。失败的查询:“CREATE TABLE order (id BIGINT AUTO_INCRMENT) ,状态 VARCHAR(255),colissimonumber VARCHAR(255) NOT NULL,created_at DATETIME NOT NULL,updated_at DATETIME NOT NULL,PRIMARY KEY(id)) ENGINE = MyISAM”。

问题显然是 order 周围没有反引号(如果我在 phpmyadmin 中手动运行带有反引号的查询,它可以工作)

我如何告诉学说在表和字段名称周围添加反引号?除了重命名我的表之外还有什么解决方法吗?

我用 1.2 运行 symfony 1.4.9

pro*_*son 5

Doctrine_Core::ATTR_QUOTE_IDENTIFIER您可以在您的学说配置方法中打开projectConfiguration它将引用表和列名称,但不建议这样做:

仅仅因为您可以使用分隔标识符,并不意味着您应该使用它们。一般来说,它们最终造成的问题比解决的问题还要多。无论如何,当您有保留字作为字段名称时,这可能是必要的(在这种情况下,我们建议您更改它,如果可以的话)。

http://www.doctrine-project.org/projects/orm/1.2/docs/manual/configuration/en#identifier-quoting

  • 顺便说一句,您也可以在databases.yml中执行此操作:attributes: { quote_identifier: true } (3认同)