2012-01-26 13 views
5

Próbuję zmienić ogranicznik poleceń MySQL, aby utworzyć procedurę z wieloma komendami. Jednak polecenie separatora nie jest rozpoznawane w MySQL 5.1.47. Przetestowałem to na MySQL 5.0.91 i działało tam.Błąd składni MySQL delimiter

DELIMITER //; 
DELIMITER ;// 

Próbuję uruchomić to z phpmyadmin, w obu sytuacjach. Używanie wersji 5.0.91 nie jest opcją, ponieważ muszę używać zdarzeń (CREATE EVENT).

Komunikat o błędzie:

#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 

Czy istnieje powód nie działa, czy istnieje alternatywa dla osiągnąć to samo (tworzenie procedurę z wieloma zapytaniami)?

+0

Czytałem, że 'DELIMITER' nie jest tak naprawdę poleceniem MySQL, jest to polecenie klienta. Czy to oznacza, że ​​PHPMyAdmin musi go obsługiwać w przeciwieństwie do MySQL? – Patrickdev

Odpowiedz

13

DELIMITER nie jest poleceniem MySQL. Jest to polecenie, które twój klient MySQL musi obsługiwać. Uruchomiłem PHPMyAdmin 2.8.2.4, który go nie obsługiwał. Kiedy uaktualniłem do najnowszej wersji, która jest obecnie 3.4.9, działało dobrze. Twoja wersja MySQL nie ma nic wspólnego z DELIMITER i czy jest obsługiwana czy nie.

2

Nie trzeba ograniczać wypowiedzi ograniczają

DELIMITER // 

procedure here etc 

DELIMITER ; 

Dokładnie jak za "Defining Stored Programs" w docs MySQL.

Jeśli możesz kontrolować wersje, najnowszym jest 5.5.20. Dlaczego nie skorzystać z tego?

Edit:

Komunikat o błędzie wskazuje na błąd w poprzednim oświadczeniu ... jeśli to nie może być to zatem siła wydają

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

procedure here etc 

DELIMITER ; 
+0

Nie mogę kontrolować wersji, po prostu mam wiele środowisk działających w różnych wersjach. Również wysłana sugestia nie działa. Pojawia się ten sam komunikat o błędzie. – Patrickdev

+0

@Patrickdev: błąd będzie w twoim poprzednim wyciągu, który będzie niezakończony ... – gbn

+1

Testowałem to za pomocą tego polecenia. Nie ma poprzedniego oświadczenia. Poza tym, jeśli byłby problem z składnią, czy nie byłby to również błąd w innych wersjach? – Patrickdev

Powiązane problemy