2012-01-26 9 views
5

MySQLコマンドの区切り文字を変更しようとしているため、複数のコマンドを含むプロシージャを作成できます。しかし、delimiterコマンドはMySQL 5.1.47では認識されないようです。私はMySQL 5.0.91でそれをテストし、そこで動作しました。MySQLデリミタの構文エラー

DELIMITER //; 
DELIMITER ;// 

私はこれを両方の状況でphpmyadminから実行しようとしています。私はイベント(CREATE EVENT)を使用する必要があるので、代わりに5.0.91を使用することはオプションではありません。

エラーメッセージ:

#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クライアントがサポートする必要があるコマンドです。私はそれをサポートしていないPHPMyAdmin 2.8.2.4を実行していました。現在3.4.9の最新バージョンにアップグレードしたところ、うまくいきました。あなたのMySQLバージョンはDELIMITERとは無関係で、サポートされているかどうかは関係ありません。

2

あなたは正確にMySQLのドキュメントで"Defining Stored Programs"あたりとして

DELIMITER // 

procedure here etc 

DELIMITER ; 

DELIMIT文を区切る必要はありません。

バージョンを管理できる場合、最新は5.5.20です。それを使わないのはなぜですか?

編集:これは力に見えることができない場合

エラーメッセージが、それはMySQLのコマンドではありませんので、

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

procedure here etc 

DELIMITER ; 
+0

私はバージョンを制御することはできません、私はちょうど異なるバージョンを実行している複数の環境を持っています。 また、投稿した提案が機能しませんでした。同じエラーメッセージが表示されます。 – Patrickdev

+0

@Patrickdev:エラーはあなたの前のステートメントに残されています... – gbn

+1

私はこのコマンドでこれをテストしました。以前の声明はありません。また、構文上の問題があった場合は、他のバージョンでもエラーが発生しないでしょうか? – Patrickdev