2012-01-26 41 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

你不需要分隔DELIMIT聲明

DELIMITER // 

procedure here etc 

DELIMITER ; 
在MySQL文檔

究竟按"Defining Stored Programs"

如果你可以控制版本,最新版本是5.5.20。爲什麼不使用它?

編輯:

該錯誤消息表示在之前的聲明中的錯誤。如果這不能似乎迫使它這樣

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

procedure here etc 

DELIMITER ; 
+0

我無法控制版本,我恰好有多個運行不同版本的環境。 另外,您發佈的建議無效。出現相同的錯誤消息。 – Patrickdev

+0

@Patrickdev:錯誤將在您的先前的語句中將被終止... – gbn

+1

我用這個命令測試了這個。沒有以前的發言。此外,如果有語法問題,是不是也會在其他版本上拋出一個錯誤? – Patrickdev