2012-01-26 28 views
5

MySQL komut sınırlayıcısını değiştirmeye çalışıyorum, böylece birden çok komut içeren bir yordam oluşturabilirim. Ancak, sınırlayıcı komutu MySQL 5.1.47'de tanınmıyor gibi görünüyor. MySQL 5.0.91 üzerinde test ettim ve orada çalışıyordu.MySQL sınırlayıcı sözdizimi hatası

DELIMITER //; 
DELIMITER ;// 

Her iki durumda da bunu phpmyadmin'den çalıştırmaya çalışıyorum. Bunun yerine 5.0.91 kullanmak bir seçenek değildir çünkü olayları kullanmam gerekiyor (CREATE EVENT).

Hata mesajı:

#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 

işe yaramıyor bir nedeni var mı, yoksa aynı şeyi (çoklu sorgu ile bir prosedür oluşturma) gerçekleştirmek için bir alternatif var mı?

+0

"DELIMITER" in gerçekten bir MySQL komutu olmadığını okudum, bu bir istemci komutu. Bu, PHPMyAdmin'in MySQL'in aksine onu desteklemesi gerektiği anlamına mı geliyor? – Patrickdev

cevap

13

DELIMITER MySQL komut değil. MySQL istemcinizin desteklemesi gereken bir komuttur. Bunu desteklemeyen PHPMyAdmin 2.8.2.4'ü çalıştırıyordum. Şu anda 3.4.9 olan en yeni sürüme geçtiğimde, gayet iyi çalıştı. MySQL sürümünüzün DELIMITER ile bir ilgisi yoktur ve desteklenip desteklenmediği.

2

Sen sınırlandırmak ifadeleri MySQL docs Tam "Defining Stored Programs" uyarınca

DELIMITER // 

procedure here etc 

DELIMITER ; 

sınırlamak için gerek yoktur.

Ve sürümlerini denetleyebiliyorsanız, en son 5.5.20'dir. Neden bunu kullanmıyorsun?

Düzenleme:

hata mesajı, önceki açıklamada bir hata olduğunu belirtir ... Bu olamaz eğer görünmek kuvvet böylece

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

procedure here etc 

DELIMITER ; 
+0

Sürümleri kontrol edemiyorum, sadece farklı sürümleri çalıştıran birden çok ortam var. Ayrıca, gönderdiğiniz öneri çalışmadı. Aynı hata mesajı belirir. – Patrickdev

+0

@Patrickdev: hata, önceki ifadede sonlandırılmayacak ... – gbn

+1

Bunu sadece bu komutla test ettim. Önceki bir ifade yok. Ayrıca, bir sözdizimi sorunu varsa, diğer versiyonlarda da bir hata atmaz mıydı? – Patrickdev