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

MySQL存储过程执行INSERT语句报1064语法错误如何解决?

MySQL #1064错误原因

#1064属于SQL语法解析错误,你当前场景的触发原因主要有以下两类:

  • 未修改默认语句分隔符:MySQL默认的语句结束符为;,存储过程内部的多段SQL都以;结尾时,MySQL会在解析到end if;后的;时,判定存储过程定义已结束,后续的insert语句会被作为独立SQL解析,直接触发语法错误。
  • 关键字或变量冲突:year属于MySQL内置关键字,如果未做特殊处理会被误识别;如果存储过程的变量未提前声明、或变量名与表字段重名,也会触发解析错误。
解决方法
  1. 定义存储过程前先修改语句分隔符,完整示例结构如下:
-- 临时修改分隔符为//,避免内部;被提前识别为语句结束
DELIMITER //
CREATE PROCEDURE 自定义存储过程名(
  IN myImg 对应数据类型,
  IN myArtist 对应数据类型,
  IN myname 对应数据类型,
  IN myartist 对应数据类型,
  IN myyear 对应数据类型,
  IN mypath 对应数据类型
)
BEGIN
  IF (myImg IS NULL) THEN
    UPDATE images
    SET images.image = myImg
    WHERE images.artist = myArtist;
  END IF;

  INSERT INTO songs
  (name, artist, `year`, audio_path)
  VALUES (myname, myartist, myyear, mypath);
END //
-- 改回默认分隔符
DELIMITER ;
  1. 对关键字字段加反引号包裹,比如示例中对year字段的处理,避免关键字识别冲突。
  2. 检查所有变量的声明:入参需要明确指定数据类型,存储过程内部的自定义变量需要提前用DECLARE声明,避免变量和字段名重名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 10:36:01