2012-01-17 24 views

Respuesta

9

De Manual

C.5.2.14. Commands out of sync
If you get Commands out of sync; you can't run this command now in your client code, you are calling client functions in the wrong order.

This can happen, for example, if you are using mysql_use_result() and try to execute a new query before you have called mysql_free_result() . It can also happen if you try to execute two queries that return data without calling mysql_use_result() or mysql_store_result() in between.

Este post (tomado de here)

I've solved that problem. I use MySQL-Fron instead MySQL Query browser. And everything works fine.

me hace pensar que no es un problema del servidor o base de datos, pero un problema en la herramienta que está utilizando.

0

que se olvidó de usar el 'Begin' palabra clave, y durante la compilación de MySQL está confundido, esto debería funcionar:

DELIMITER ;; 
Create procedure sp_test() 
    BEGIN 
     select * from name_table; 
    END;; 
DELIMITER ; 
1

Supongamos que cuando se creó el procedimiento almacenado que lo ha almacenado en la base de datos llamada mydatabase para llamar al procedimiento. Ir a su servidor local y DB:

CALL mydatabase.sp_test(); 

Dónde sp_test() es el nombre de su procedimiento.

+0

simplemente traté este tema y no su trabajo en servidor de base de datos del servidor : 127.0.0.1 a través de TCP/IP Tipo de servidor: Versión MariaDB Servidor: 10.1. 13-MariaDB - mariadb.org distribución binaria Protocol version: 10 de usuario: root @ localhost servidor de juego de caracteres: UTF-8 Unicode (UTF-8) del servidor web Apache/2.4.17 (Win32) Abrir SSL/1.0.2d PHP/5.6.20 Versión del cliente de la base de datos: libmysql - mysqlnd 5.0.11-dev - 20120503 - $ Id: 76b08b24596e12d4553bd41fc93cccd5bac2fe7a $ Extensión de PHP: documentación de mysqli Versión de PHP: 5.6.20 –

4

que era capaz de reproducir este error con MySQL y phpMyAdmin:

#2014 - Commands out of sync; you can't run this command now 

enter image description here En esta versión de MySQL:

[email protected]:~$ mysql --version 
mysql Ver 14.14 Distrib 5.5.34, for debian-linux-gnu (x86_64) using readline 6.2 

Con la siguiente ejecución de SQL a través de la ventana de consulta phpmyadmin:

use my_database; 
DELIMITER $$ 

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

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

No pude obtener el error de ha ppen a través de la terminal mysql, así que creo que es un error con phpmyadmin.

Funciona bien en el terminal:

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) 

creo que el error tiene algo que ver con el cambio de la delimitadores mediados de consulta dentro de phpMyAdmin.

Solución: Reduzca la velocidad de su vaquero y ejecute sus sentencias de SQL de a una al usar phpmyadmin. phpmyadmin es "bob de tarea única", solo puede hacer un trabajo.

0

También encontré este problema con una API de C.

Encontré la solución con el último ejemplo anterior, que habla de delimitadores.

use my_database; 
DELIMITER $$ 

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

CALL foo()$$ 

Mi código ejecuta un procedimiento almacenado y luego prueba la devolución. Uso correctamente el mysql_free_result().

Dado que no he agregado una cláusula de selección "en" en el procedimiento, este error ocurrió.

El último ejemplo anterior está en el mismo caso.

He eliminado la selección y dado que está bien.

Alex

0

acabo de recibir el mismo error de phpMyAdmin cuando se llama a una función de usuario que estoy trabajando. Sin embargo

consola de MySQL dice:

ERROR 1054 (42S22): Unknown column 'latitude' in 'field list' 

... que es absolutamente correcto, está mal escrito en la lista de campos, por lo que una declaración se refería a una variable no definida.

tendría que concluir que

#2014 - Commands out of sync; you can't run this command now 

de phpMyAdmin es un error bastante inespecíficos, que en muchos casos, si no la mayoría, es sólo ocultar el verdadero problema, y ​​no hay que gastar mucho mucho tiempo tratando de darle sentido.

0

Aparentemente tiene este problema porque ambas instrucciones se ejecutan simultáneamente. La única solución que he encontrado es cerrar la conexión después de sp y ejecutar la otra declaración en una nueva. Lea sobre esto here.

0

Esto me estaba pasando porque una función dentro de un procedimiento devolvía un valor que no estaba asignado a una variable.

La solución fue:

select function .... INTO @XX; 
Cuestiones relacionadas