LEAD зарезервированное слово в MySQL - PullRequest
0 голосов
/ 01 октября 2018

Для этой простой таблицы, созданной в MySQL 8.012

CREATE TABLE `lead` (
  `ID` int(11) NOT NULL,
  `TS` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `RS` json DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

Оператор

INSERT INTO lead (ID,RS) VALUES (1397,'{"ID":"1397","TITLE":"John Lenon -TESTE ZAPIER 54","HONORIFIC":"0"}') 
ON DUPLICATE KEY UPDATE RS = VALUES(RS);

FAILS при отправке через PhpMysqladmin с ошибкой

Статический анализ:

3 ошибки были обнаружены во время анализа.

Нераспознанное ключевое слово.(около "ON" в позиции 111) Нераспознанное ключевое слово.(рядом с «DUPLICATE» в позиции 114) Нераспознанное ключевое слово.(около «KEY» в позиции 124)

SQL-запрос:

INSERT INTO lead (ID,RS) VALUES 
  (1397,'{"ID":"1397","TITLE":"John Lenon -TESTE ZAPIER 54","HONORIFIC":"0"}') 
  ON DUPLICATE KEY UPDATE RS = VALUES(RS)

MySQL сказал: Документация

1064 - у вас есть ошибка вваш синтаксис SQL;проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы найти правильный синтаксис для использования рядом со «ЗНАКАМИ (ID, RS)» (1397, «{« ID »:« 1397 »,« TITLE »:« Джон Ленон -TESTE ZAPIER 54 »), «H» в строке 1

Однако, если имя таблицы изменить, скажем, на «myleader», оператор работает как символ.

Есть мысли? Спасибо, Роналду

1 Ответ

0 голосов
/ 01 октября 2018

Да, LEAD - зарезервированное слово:

LEAD (R);добавлено в 8.0.2 (зарезервировано)

Ключевые слова MySQL и зарезервированные слова

...