Ubuntu下MySQL创建存储过程报ERROR 1064 (42000)错误如何解决
报错原因
get是MySQL的内置保留关键字,不可直接用作存储过程名称,SQL解析器遇到该关键字时会优先识别为内置指令而非自定义标识符,因此触发语法错误。- 你此前修改分隔符的操作、存储过程内部的查询逻辑均无问题,a表存在也和本次报错无关,问题仅出在存储过程命名违规。
解决方法
提供两种可直接落地的修复方案:
方案1:更换非关键字的存储过程名(推荐)
选择没有被MySQL占用的名称即可,示例执行代码如下:
-- 先修改分隔符 delimiter && -- 创建存储过程,名称更换为get_a_info这类自定义名称 create procedure get_a_info() begin select * from a; end&& -- 执行完成后将分隔符改回默认的分号 delimiter ;
后续调用语句为:call get_a_info();
方案2:用反引号包裹保留关键字强制使用
如果必须使用get作为存储过程名称,需要用反引号将标识符包裹,强制MySQL将其识别为自定义名称:
delimiter && create procedure `get`() begin select * from a; end&& delimiter ;
后续调用时也需要携带反引号:call get();
内容的提问来源于stack exchange,提问作者Linyurain
相关产品推荐
相关产品推荐

