【问题标题】:MySQL delimiter syntax errorMySQL 分隔符语法错误
【发布时间】:2012-02-19 11:54:40
【问题描述】:

我正在尝试更改 MySQL 命令分隔符,以便创建一个包含多个命令的过程。但是,在 MySQL 5.1.47 上似乎无法识别 delimiter 命令。我在 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?

标签: mysql syntax delimiter


【解决方案1】:

您不需要分隔 DELIMIT 语句

DELIMITER //

procedure here etc

DELIMITER ;

完全按照 MySQL 文档中的 "Defining Stored Programs"

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

编辑:

错误信息表明前一个语句中的错误...如果这似乎无法强制执行

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

procedure here etc

DELIMITER ;

【讨论】:

  • 我无法控制版本,我只是碰巧有多个环境运行不同的版本。另外,您发布的建议无效。出现相同的错误消息。
  • @Patrickdev:错误将出现在您之前的语句中,该语句将被终止......
  • 我只用这个命令测试了这个。没有之前的说法。另外,如果有语法问题,是不是也会在其他版本上报错?
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-11-22
    • 2017-12-19
    • 2010-11-19
    • 2020-04-30
    • 1970-01-01
    • 2011-11-23
    • 1970-01-01
    相关资源
    最近更新 更多