MySQL 分隔符语法错误

11

我试图改变MySQL命令分隔符,以便在其中创建多个命令的过程。然而,在MySQL 5.1.47上似乎无法识别分隔符命令。我在MySQL 5.0.91上进行了测试,那里可以工作。

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 

是有什么原因导致它不起作用,还是有其他方法可以实现相同的功能(创建具有多个查询的过程)?


我已经读到DELIMITER不是真正的MySQL命令,而是客户端命令。这是否意味着PHPMyAdmin需要支持它,而不是MySQL? - Patrickdev
2个回答

29

DELIMITER 不是 MySQL 命令,而是需要你的 MySQL 客户端支持的命令。我正在运行 PHPMyAdmin 2.8.2.4,它不支持该命令。当我升级到最新版本(目前为3.4.9)时,它就可以正常工作了。你的 MySQL 版本与 DELIMITER 是否受支持无关。

此外,请注意,某些客户端可能存在一个 bug,即对大小写敏感的 DELIMITER 只有小写的 delimiter 或大写的 DELIMITER 起作用。


4
您不需要对DELIMIT语句进行分隔。
DELIMITER //

procedure here etc

DELIMITER ;

按照MySQL文档中"Defining Stored Programs"的要求。

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

编辑:

错误消息指示前一个语句中存在错误... 如果无法看到,请强制执行以下操作

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

procedure here etc

DELIMITER ;

我无法控制版本,我只是碰巧有多个环境运行不同的版本。另外,您发布的建议没有起作用。相同的错误消息出现了。 - Patrickdev
@Patrickdev:错误将在您之前的语句中,该语句将无法终止... - gbn
1
我只用这个命令进行了测试。之前没有其他语句。此外,如果存在语法问题,其他版本也会报错,不是吗? - Patrickdev

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接