Symfony doctrine :: build build не может создать таблицу с именем order - PullRequest
1 голос
/ 25 апреля 2011

У меня есть база данных с таблицей с именем order. Когда я запускаю php symfony doctrine:build --all, я получаю следующую ошибку:

SQLSTATE [42000]: синтаксическая ошибка или нарушение доступа: 1064 У вас есть ошибка в вашем синтаксисе SQL; проверить руководство, которое соответствует вашему MySQL версия сервера для правильного синтаксиса использовать рядом с заказом (идентификатор BIGINT AUTO_INCREMENT, статус VARCHAR (255), Колиссимон номер VARCHAR (25 'в строке 1. Неудачный запрос: "CREATE TABLE order (id BIGINT AUTO_INCREMENT, статус VARCHAR (255), колиссимон VARCHAR (255) NOT NULL, создал_ DATETIME NOT NULL, updated_at DATETIME NOT NULL, ПЕРВИЧНЫЙ КЛЮЧ (id)) ДВИГАТЕЛЬ = MyISAM».

Проблема состоит в том, что в заказе нет обратных кавычек (если я запускаю запрос вручную в phpmyadmin с обратными кавычками, он работает)

Как мне сказать доктрине добавлять обратные кавычки вокруг имен таблиц и полей? Любой обходной путь, кроме переименования моего стола?

Я запускаю Symfony 1.4.9 с доктриной 1.2

Ответы [ 2 ]

4 голосов
/ 25 апреля 2011

Вы можете включить Doctrine_Core::ATTR_QUOTE_IDENTIFIER в своей конфигурации доктрины mthod на projectConfiguration, которая будет заключать в кавычки таблицы и имена столбцов, но это не рекомендуется:

Только потому, что вы МОЖЕТЕ использовать разделитель идентификаторы, это не значит, что вы СЛЕДУЕТ использовать их. В общем, они заканчиваются вызывая гораздо больше проблем, чем они решать. Во всяком случае, это может быть необходимо когда у вас есть зарезервированное слово как имя поля (в этом случае мы предлагаем поменяй, если сможешь).

http://www.doctrine -project.org / проекты / ОРМ / 1,2 / Docs / ручной / конфигурации / EN # Идентификатор кавычки

3 голосов
/ 25 апреля 2011

Возможно, вы хотите, чтобы ваша модель называлась Order, но это не означает, что соответствующая таблица RDBMS должна иметь то же имя.

Order:
  tableName: project_order
  columns: ...
...