如何解决MySQL分隔符语法错误

问题描述 投票:0回答:3

我正在尝试更改 MySQL 命令分隔符,以便我可以创建一个包含多个命令的过程。但是,MySQL 5.1.47 上似乎无法识别分隔符命令。我在 MySQL 5.0.91 上测试了它,它确实在那里工作。

DELIMITER //;
DELIMITER ;//

在这两种情况下,我都尝试从 phpmyadmin 运行它。使用 5.0.91 不是一个选项,因为我需要使用事件 (

CREATE EVENT
)。

错误信息:

#1064 - 你的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,了解要使用的正确语法 第 1 行“DELIMITER //”附近

它不起作用是否有原因,或者是否有其他方法可以完成相同的事情(创建具有多个查询的过程)?

mysql syntax delimiter
3个回答
30
投票

DELIMITER
不是 MySQL 命令。这是您的 MySQL 客户端需要支持的命令。我运行的是 PHPMyAdmin 2.8.2.4,它不支持它。当我升级到最新版本(目前为 3.4.9)时,它工作得很好。你的MySQL版本与
DELIMITER
以及是否支持无关。

另请注意,某些客户端可能存在

DELIMITER
区分大小写的错误,其中仅小写
delimiter
或大写
DELIMITER
有效。


4
投票

您不需要分隔 DELIMIT 语句

DELIMITER //

procedure here etc

DELIMITER ;

完全按照 MySQL 文档中的“定义存储程序”

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

编辑:

错误消息表明前面的语句有错误...如果这不能似乎强制它

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

procedure here etc

DELIMITER ;

-2
投票

使用 MySqlScript 类。 示例(C# 代码):

scriptText = "create procedure proc_name (param1 int) begin set @num=1; end$$";
MySqlScript script = new MySqlScript(conn);
script.Delimiter = "$$";
script.Query = scriptText;
script.Execute();
© www.soinside.com 2019 - 2024. All rights reserved.