Ошибка в синтаксисе SQL (MYSQL 5.0) - PullRequest
1 голос
/ 29 декабря 2011

Кто-нибудь знает, что не так в этом синтаксисе MYSQL 5.0?

CREATE TABLE IF NOT EXISTS target (
  _id int(11) NOT NULL AUTO_INCREMENT,
  time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  map_id int(11) DEFAULT NULL,
  left int(11) DEFAULT NULL,
  top int(11) DEFAULT NULL,
  status tinyint(1) NOT NULL,
  temperature int(11) DEFAULT NULL,
  humidity float DEFAULT NULL,
  lum int(11) DEFAULT NULL,
  PRIMARY KEY (_id),
  FOREIGN KEY (map_id) REFERENCES map(id) ON DELETE CASCADE
)

Я покажу вам ошибку:

В вашем синтаксисе SQL есть ошибка;проверьте руководство, соответствующее вашей версии сервера MySQL, для правильного синтаксиса, чтобы использовать возле 'левого INTEGER DEFAULT NULL, верхнего INTEGER DEFAULT NULL, состояния tinyint (1) NOT' в строке 5

Ответы [ 3 ]

2 голосов
/ 29 декабря 2011

вы должны написать это так:

CREATE TABLE IF NOT EXISTS target (
  _id int(11) NOT NULL AUTO_INCREMENT,
  time timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  map_id int(11) DEFAULT NULL,
  `left` int(11) DEFAULT NULL,
  top int(11) DEFAULT NULL,
  status tinyint(1) NOT NULL,
  temperature int(11) DEFAULT NULL,
  humidity float DEFAULT NULL,
  lum int(11) DEFAULT NULL,
  PRIMARY KEY (_id),
  FOREIGN KEY (map_id) REFERENCES map(id) ON DELETE CASCADE
)

посмотрите на символы `` (обратные метки) в левой строке!

2 голосов
/ 29 декабря 2011

Поскольку left является MySQL 5.0 зарезервированным словом .Кроме того, даже если вы можете избежать имени поля, никогда не рекомендуется использовать зарезервированные слова в определении таблицы.

0 голосов
/ 29 декабря 2011

Вы используете зарезервированные слова в качестве имен полей.Вы можете сделать это, но тогда вы должны правильно избежать их, например:

CREATE TABLE IF NOT EXISTS target (
  `_id` int(11) NOT NULL AUTO_INCREMENT,
  `time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `map_id` int(11) DEFAULT NULL,
  `left` int(11) DEFAULT NULL,
  `top` int(11) DEFAULT NULL,
  `status` tinyint(1) NOT NULL,
  `temperature` int(11) DEFAULT NULL,
  `humidity` decimal(13,2) DEFAULT NULL,
  `lum` int(11) DEFAULT NULL,
  PRIMARY KEY (_id),
  FOREIGN KEY (map_id) REFERENCES map(id) ON DELETE CASCADE
)

Мой совет - избегать зарезервированных имен.

...