You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为什么该存储过程在MySQL中无法运行?报1064语法错误

错误根因

这个1064语法错误是自定义分隔符书写格式不规范导致的:
你虽然通过delimiter $$把客户端临时语句结束符改成了$$,避免和存储过程内部语句的;冲突,但代码里把存储过程结束关键字END和分隔符$$直接连写成了end$$。绝大多数MySQL客户端(官方命令行、Navicat、DBeaver等各版本)解析时,会把连写的end$$识别成一个普通标识符,不会把后面的$$判定为存储过程的结束标记。客户端解析到第三行INSERT语句末尾的;时,就认为当前语句已经结束,找不到和BEGIN匹配的块结束标识,最终抛出指向空字符串的语法报错。

修复方案

只需要在END关键字和自定义分隔符$$之间加一个半角空格,规范代码格式即可。修正后可正常执行的完整代码如下:

DROP PROCEDURE IF EXISTS insercion_anime;

DELIMITER $$
CREATE PROCEDURE insercion_anime (
    IN nombre_anime VARCHAR(200),
    IN a_english_name VARCHAR(200)
)
BEGIN
    INSERT INTO anime (name, english_name) VALUES (nombre_anime, a_english_name);
END $$

DELIMITER ;

验证方式

代码执行无报错后,可以运行如下调用语句测试功能是否正常:

CALL insercion_anime('间谍过家家', 'SPY×FAMILY');

执行后查询anime表,能看到对应插入的数据就说明存储过程生效正常。

注意:执行创建语句时不要选中末尾DELIMITER ;之后的空白不可见字符,部分客户端会把这类不可见字符识别为非法语法触发报错。

内容的提问来源于stack exchange,提问作者Francesco Forace

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 08:31:09