2012-01-26 2 views
5

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

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 

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

+0

Я читал, что 'DELIMITER' на самом деле не является командой MySQL, это клиентская команда. Означает ли это, что PHPMyAdmin должен поддерживать его, а не MySQL? – Patrickdev

ответ

13

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

2

Вам не нужно разграничить заявления разграничить

DELIMITER // 

procedure here etc 

DELIMITER ; 

Точно согласно "Defining Stored Programs" в документации MySQL.

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

Edit:

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

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

procedure here etc 

DELIMITER ; 
+0

Я не могу управлять версиями, мне просто приходится иметь несколько сред, работающих под разными версиями. Кроме того, предложение, которое вы опубликовали, не работает. Появится одно и то же сообщение об ошибке. – Patrickdev

+0

@Patrickdev: ошибка будет в вашем предыдущем заявлении, которое будет уничтожено ... – gbn

+1

Я проверил это только с помощью этой команды. Нет предыдущего заявления. Кроме того, если бы возникла проблема с синтаксисом, не было бы и ошибкой для других версий? – Patrickdev

Смежные вопросы