phpMyAdmin调用存储过程报2014 Commands out of sync错误如何解决
报错原因及解决方案
核心原因
- MySQL返回的
#2014 - Commands out of sync; you can't run this command now错误触发逻辑:存储过程执行后会返回结果集,phpMyAdmin默认执行完自定义查询后会自动发起SET FOREIGN_KEY_CHECKS = ON的后续校验查询,此时存储过程的结果集还未被完全读取,就触发了MySQL的命令不同步限制。 - 静态分析提示的「缺少表达式。(位置25处附近的"ON"关键字)」属于phpMyAdmin低版本的语法静态分析误判,不会影响实际SQL执行,无需单独处理。
解决方法
方案1:调整存储过程定义(推荐)
给存储过程补充DELIMITER声明和BEGIN...END封装块,让MySQL可以正确识别存储过程的执行边界,修改后的代码如下:
DELIMITER // CREATE PROCEDURE `funcpara`(IN `uname` VARCHAR(255)) BEGIN SELECT ct.CUST_NM, UPPER(CUST_NM) AS UppercaseCustomerName FROM customers ct WHERE ct.CUST_NM = uname; END // DELIMITER ;
删除原有存储过程后执行上述代码重新创建,再调用CALL funcpara('karthick');即可正常返回结果。
方案2:临时修改phpMyAdmin查询配置
如果不想修改存储过程,在SQL输入框填写调用语句后,勾选输入框下方的 不使用缓冲查询 选项,再点击执行即可正常返回结果。
方案3:升级phpMyAdmin版本
该问题属于phpMyAdmin 4.9版本之前的已知缺陷,升级到4.9.0及以上的正式版本后,即可规避默认自动发起后续查询导致的不同步报错。
内容的提问来源于stack exchange,提问作者Tony S
相关产品推荐
相关产品推荐

