Сгенерированный доктриной оператор SQL дает 1064 - PullRequest
0 голосов
/ 20 января 2012

У меня есть оператор MySQL, сгенерированный доктриной, которая выдает ошибку 1064.При разборе всего SQL я обнаружил, что ошибка относится только к одной таблице с именем group.Для меня запрос выглядит нормально, может быть, более умелый взгляд на SQL-оператор видит это?

Ошибка:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'group ( id INT AUTO_INCREMENT NOT NULL, name VARCHAR(150) NOT NULL, creationdate' at line 1

Оператор:

CREATE TABLE group (
id INT AUTO_INCREMENT NOT NULL,
name VARCHAR(150) NOT NULL,
creationdate DATETIME NOT NULL, 
deleted TINYINT(1) NOT NULL, 
PRIMARY KEY(id)) 
ENGINE = InnoDB;

Ответы [ 3 ]

2 голосов
/ 20 января 2012

GROUP - это MySQL зарезервированное слово , переименуйте эту таблицу или используйте обратные ссылки (`) -

CREATE TABLE `group`(
  id INT AUTO_INCREMENT NOT NULL,
  name VARCHAR(150) NOT NULL,
  creationdate DATETIME NOT NULL,
  deleted TINYINT(1) NOT NULL,
  PRIMARY KEY (id)
)
ENGINE = INNODB;
0 голосов
/ 20 января 2012

Первое предположение, потому что группа - это ключевое слово, вы пробовали

CREATE TABLE [group] ( ...
0 голосов
/ 20 января 2012

group является зарезервированным словом и не может использоваться в качестве имени таблицы, если не указано в кавычках.

Если ваша установка MySQL настроена для работы в ANSI (стандартном) режиме, она должна быть заключена в двойные кавычки:

CREATE TABLE "group" 

Если ваш сервер работает в нестандартном режиме (который являетсяк сожалению по умолчанию), вам нужно

CREATE TABLE `group`
...