我正在使用MySQL,我正在定义一个存储过程,如下所示:
delimiter ;;
Create procedure sp_test()
select * from name_table;
end
当我尝试执行该过程时,会出现以下错误:
#2014 - Commands out of sync; you can't run this command now
这意味着什么,我做错了什么?
我能够用MySQL和phpMyAdmin重现此错误:
#2014 - Commands out of sync; you can't run this command now
el@apollo:~$ mysql --version
mysql Ver 14.14 Distrib 5.5.34, for debian-linux-gnu (x86_64) using readline 6.2
通过phpmyadmin查询窗口运行以下SQL:
use my_database;
DELIMITER $$
CREATE PROCEDURE foo()
BEGIN
select 'derp' as 'msg';
END $$
CALL foo()$$ <----Error happens here, with or without delimiters.
我无法通过MySQL终端使错误发生,所以我认为这是phpMyAdmin的一个bug。
它在终端上运行良好:
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)
我认为这个错误与更改phpMyAdmin中的查询中的分隔符有关。
解决方法:放慢速度,牛仔,在使用phpMyAdmin时一次运行一条SQL语句。phpmyadmin是“单任务鲍勃”,他只能做一项工作。
从手册
C.5.2.14.命令不同步
如果命令不同步;您现在不能运行此命令
在您的客户端代码中,您正在以错误的顺序调用客户端函数。
例如,如果您正在使用mysql_use_result()
并尝试在调用mysql_free_result()
之前执行一个新查询,就可能发生这种情况。如果您尝试执行两个返回数据的查询,而不在这两个查询之间调用mysql_use_result()
或mysql_store_result()
,也可能发生这种情况。
本帖(取自此处)
我已经解决了那个问题。我使用MySQL-Fron代替MySQL查询浏览器。一切正常。
使我认为这不是服务器或数据库的问题,而是您使用的工具的问题。
问题内容: 我正在尝试执行我的PHP代码,该代码通过mysqli调用两个MySQL查询,并得到错误“命令不同步;您现在不能运行此命令”。 这是我正在使用的代码 我曾尝试阅读此书,但不确定该怎么做。我已经阅读了有关存储结果和免费结果的信息,但是使用它们时并没有什么区别。我不确定此错误的确切原因,并想知道其原因以及如何解决。 按照我的调试语句,由于我的sql语法near附近,甚至没有输入countQu
问题内容: 我已经将注册脚本从mysql转换为mysqli。我作为mysql正常工作,但是现在却给我错误 这是我用来注册用户的功能 电子邮件可以很好地发送来自我的阵列的正确数据。但是,没有数据插入到数据库中,并且出现了上面提到的错误。我以前从未遇到过这个错误。 问题答案: 如果 命令不同步; 您现在无法在客户端代码中运行此命令,您以错误的顺序调用了客户端函数。 例如,如果您使用的是mysql_us
问题内容: 我有一个从Python(包装在Django中)执行的MySQL存储过程。当我尝试执行第二条语句时,出现错误“命令不同步;您现在不能运行此命令”。我目前无法提交交易。当我调用过程时,这只是一个问题。该怎么办? 编辑:我被要求发布MySQL过程。我使它变得非常简单,但我仍然遇到相同的问题 问题答案: 感谢JoshuaBoshi的回答,该问题得以解决。调用该过程之后,我必须关闭游标并再次打开
问题内容: 在我的数据库中,我有一些存储过程。 我想给其中一个打个电话,根据我从此过程中得到的结果,我将确定是否要打第二个天气。 如您所见,我使用的方法 但是仍然在调用其他过程时得到: 这是我对db函数的调用: 问题答案: 每个存储过程至少返回 两个 结果 一个(或多个)实际结果 一个空结果告诉客户没有其他结果。 您必须使用/ 清洁它们。 如果您的过程仅返回一个结果,或者您只想要第一个结果,而不想
问题内容: 以下代码,使用python 2.6.6和MySQLdb 1.2.2导致 命令不同步; 您不能立即运行此命令 MySQLdb异常: 在执行第二个查询期间引发异常。如我所读,异常通常是由MySQL的C API实现的限制引起的,该限制不允许并发查询执行。 如果我在上述两个查询之间重新创建游标对象,则会解决此问题,但不幸的是,该解决方案对我而言似乎并不完美。对于数据库连接和查询执行,我有一个非
问题内容: 我在PHP / MySQLi中使用两个准备好的语句从mysql数据库检索数据。但是,当我运行语句时,出现“命令不同步,您现在不能运行命令”错误。 这是我的代码: 我尝试过的 将准备好的语句移动到两个单独的对象。 使用代码: } //To make sure that no stray result data is left in buffer between the first //a