在Adminer中创建MySQL存储过程时出现语法错误求助
解决Adminer创建MySQL存储过程的语法错误问题
这问题我之前踩过一模一样的坑!Adminer和MySQL CLI在处理存储过程定义时,核心差异就在语句分隔符上——这几乎肯定是你遇到的问题。
为什么CLI能成功,Adminer却报错?
MySQL默认用;作为语句结束符,但存储过程内部的SQL语句也会用到;。在CLI里,你大概率是先执行了DELIMITER //(或其他符号)临时修改了分隔符,让MySQL知道只有遇到//才结束整个存储过程的定义;但Adminer默认没做这个设置,它会把存储过程里第一个;当成整个语句的结尾,自然就抛出语法错误了。
具体解决步骤
方法1:通过Adminer界面修改分隔符(推荐)
- 打开Adminer,进入你要创建存储过程的数据库。
- 找到SQL输入区域的分隔符设置(通常在输入框右下角,默认显示
;),把它改成//或$$这类不会和存储过程内部冲突的符号。 - 在SQL输入框中写入存储过程代码,注意用你设置的新分隔符结尾:
CREATE PROCEDURE test() BEGIN SELECT * FROM lead; END //
- 点击执行按钮,成功创建后,记得把分隔符改回
;,之后就可以正常调用CALL test();了。
方法2:用SQL语句修改分隔符(部分Adminer版本支持)
如果你的Adminer版本支持通过SQL语句修改分隔符,可以直接执行这段代码:
DELIMITER // CREATE PROCEDURE test() BEGIN SELECT * FROM lead; END // DELIMITER ;
执行后同样可以成功创建存储过程。
额外验证
创建完成后,在Adminer的左侧菜单找到“存储过程”选项,查看是否存在test;或者直接执行CALL test();,如果能正常返回lead表的所有数据,就说明问题解决了。
内容的提问来源于stack exchange,提问作者Allan
相关产品推荐
相关产品推荐

