@AcidZer0

Как найти ошибку синтаксиса mysql?

Для функционала одной примочки необходимо добавить в бд триггер. Но mysql ругается на синтаксис.
А вот где эта ошибка синтаксиса так и не могут найти Я, и два php программиста.
CREATE DEFINER=`root`@`%` TRIGGER `hlstats_Players_after_insert`
AFTER INSERT ON `hlstats_Players`
FOR EACH ROW
BEGIN
    IF NEW.`game` = "tf" OR NEW.`game`= "tf2ser2" THEN INSERT INTO `data_orange` SET `playerId` = NEW.`playerId`;
    END IF;
END;

А вот что отвечает mysql
CREATE DEFINER = `root`@`%` TRIGGER `hlstats_Players_after_insert` AFTER INSERT ON `hlstats_Players`
FOR EACH
ROW
BEGIN
IF NEW.`game` = "tf"
OR NEW.`game` = "tf2ser2"
THEN INSERT INTO `data_orange`
SET `playerId` = NEW.`playerId` ;

Ответ MySQL: Документация
#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 '' at line 5

Пробовали всю пятую строку и вообще без апострофов. Тот же ответ. Очень надеюсь на Ваши светлые головы.
  • Вопрос задан
  • 353 просмотра
Пригласить эксперта
Ответы на вопрос 2
mahoho
@mahoho
Full stack certified PHP developer.
Ругается на двойные кавычки - похоже, что у вас включен sql_mode ANSI_QUOTES, при таком режиме двойные кавычки интерпретируются как символы экранирования имен объектов (аналогично символу `) Сделайте так:
SET @@sql_mode = 'TRADITIONAL';
DELIMITER $$
CREATE DEFINER=`root`@`%` TRIGGER `hlstats_Players_after_insert`
AFTER INSERT ON `hlstats_Players`
FOR EACH ROW
BEGIN
IF NEW.`game` = "tf" OR NEW.`game`= "tf2ser2" THEN
INSERT INTO data_orange SET playerId = NEW.playerId;
END IF;
END$$
Ответ написан
@AcidZer0 Автор вопроса
Уж не знаю почему, но запрос вида
DELIMITER $$
CREATE DEFINER=`root`@`%` TRIGGER `hlstats_Players_after_insert`
AFTER INSERT ON `hlstats_Players`
FOR EACH ROW
BEGIN
    IF NEW.`game` = "tf" OR NEW.`game`= "tf2ser2" THEN INSERT INTO `data_orange` SET `playerId` = NEW.`playerId`;
    END IF;
END$$

Сработал через heidisql. Вот и ломай голову, почему...
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы