Синтаксическая ошибка разделителя MySQL - PullRequest
8 голосов
/ 26 января 2012

Я пытаюсь изменить разделитель команд MySQL, чтобы создать процедуру с несколькими командами.Однако команда разделителя, похоже, не распознается в MySQL 5.1.47.Я тестировал его на MySQL 5.0.91, и он там работал.

DELIMITER //;
DELIMITER ;//

Я пытаюсь запустить это из phpmyadmin, в обеих ситуациях.Использование 5.0.91 вместо этого не вариант, потому что мне нужно использовать события (CREATE EVENT).

Сообщение об ошибке:

#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 'DELIMITER //' at line 1 

Есть причина, по которой он не работает, илиЕсть ли альтернатива для выполнения одного и того же (создание процедуры с несколькими запросами)?

Ответы [ 2 ]

19 голосов
/ 29 января 2012

DELIMITER не является командой MySQL.Это команда, которую должен поддерживать ваш клиент MySQL.Я использовал PHPMyAdmin 2.8.2.4, который не поддерживал его.Когда я обновил до последней версии, которая в настоящее время 3.4.9, она работала просто отлично.Ваша версия MySQL не имеет ничего общего с DELIMITER и поддерживается ли она или нет.

3 голосов
/ 26 января 2012

Вам не нужно разделять операторы DELIMIT

DELIMITER //

procedure here etc

DELIMITER ;

Точно в соответствии с "Определение хранимых программ" в документах MySQL.

И если вы можете контролировать версии, последняя версия 5.5.20.Почему бы не использовать это?

Редактировать:

Сообщение об ошибке указывает на ошибку в предыдущем выражении ... если это не может показаться принудительным, это так

; /* <- force previous statement termination */ DELIMITER //

procedure here etc

DELIMITER ;
...