首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MySQL错误#2014 -命令不同步;您现在不能运行此命令

MySQL错误#2014 -命令不同步;您现在不能运行此命令
EN

Stack Overflow用户
提问于 2012-01-17 15:44:44
回答 14查看 83K关注 0票数 18

我使用的是MySQL,并且我定义了一个存储过程,如下所示:

代码语言:javascript
运行
复制
delimiter ;;
Create procedure sp_test()

  select * from name_table;
end

当我试图执行这个过程时,我得到了这个错误:

代码语言:javascript
运行
复制
#2014 - Commands out of sync; you can't run this command now

这意味着什么?我做错了什么?

EN

回答 14

Stack Overflow用户

发布于 2012-01-17 15:50:18

来自Manual

C.5.2.14。命令不同步

如果你得到Commands out of sync; you can't run this command now

在客户端代码中,您正在以错误的顺序调用客户端函数。

例如,如果您正在使用mysql_use_result()并尝试在调用mysql_free_result()..。如果您尝试执行两个返回数据的查询而不调用mysql_use_result()或者mysql_store_result()介于两者之间。

本文(摘自这里here)

我已经解决了这个问题。我使用的是MySQL-Fron而不是MySQL查询浏览器。一切都运行得很好。

这让我觉得这不是服务器或数据库的问题,而是你使用的工具有问题。

票数 15
EN

Stack Overflow用户

发布于 2013-12-07 07:11:13

我能够用MySQL和phpmyadmin重现这个错误:

代码语言:javascript
运行
复制
#2014 - Commands out of sync; you can't run this command now

在此版本的MySQL上:

代码语言:javascript
运行
复制
el@apollo:~$ mysql --version
mysql  Ver 14.14 Distrib 5.5.34, for debian-linux-gnu (x86_64) using readline 6.2

通过phpmyadmin查询窗口运行以下SQL:

代码语言:javascript
运行
复制
use my_database;
DELIMITER $$

CREATE PROCEDURE foo()
BEGIN
select 'derp' as 'msg';
END $$

CALL foo()$$           <----Error happens here, with or without delimiters.

我无法通过MySQL终端获取错误,所以我认为这是phpmyadmin的错误。

它在终端上运行良好:

代码语言:javascript
运行
复制
mysql> delimiter $$
mysql> use my_database$$ create procedure foo() begin select 'derp' as 'msg'; end $$ call foo() $$
Database changed
Query OK, 0 rows affected (0.00 sec)
+------+
| msg  |
+------+
| derp |
+------+
1 row in set (0.00 sec)
Query OK, 0 rows affected (0.00 sec)

我认为这个bug与在phpmyadmin中更改查询中的分隔符有关。

解决方法:放慢速度,牛仔,在使用phpmyadmin时,一次运行一条SQL语句。phpmyadmin是“单任务bob",他只能做一项工作。

票数 7
EN

Stack Overflow用户

发布于 2020-11-06 15:17:05

在我的例子中,我的存储过程中有以下结构:

代码语言:javascript
运行
复制
DELIMITER //
    DROP PROCEDURE IF EXISTS processcolumns;
    CREATE PROCEDURE processcolumns ()
    BEGIN
        (...)
    END //
DELIMITER ;

CALL processcolumns ();
DROP PROCEDURE processcolumns;

问题在于:DROP PROCEDURE IF EXISTS processcolumns;

我去掉了分号;并将其替换为分隔符//如下所示:

代码语言:javascript
运行
复制
DROP PROCEDURE IF EXISTS processcolumns //

现在问题解决了!

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8891179

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档