MySQL - EXPERTOS POR FAVOR: Commands out of sync; you can"t run this command now

 
Vista:
sin imagen de perfil

EXPERTOS POR FAVOR: Commands out of sync; you can"t run this command now

Publicado por Rolando (10 intervenciones) el 18/04/2016 21:23:16
Señores, buenos días... el problema va así: (el formato de tabuladores lo quita este editor)

Ejecuto desde PHP un CALL a un procedimiento almacenado que devuelve un valor de salida... el procedimiento termina así:
1
2
3
4
5
6
7
IF _error = 0 THEN
	COMMIT;
	SELECT id_servicioI AS outVal;
ELSE
	ROLLBACK;
	SELECT 0 AS outVal;
END IF;

Y lo hago de la siguiente forma:
1
2
3
4
5
6
7
$rs = $dbVal->query($sqlSP)or die ("ERROR: " . mysql_error() . "<p>$sqlSP</p>");
	if ($dbVal->next_record())
		$return = $dbVal->f(0);
 
	$errorOUT = false;
	if ($return == 0)
		$errorOUT = true;

Y luego, el sistema en otra función PHP ejecuta un SELECT id FROM sericios WHERE soc= 'x34q';

Cuando se ejecuta esta consulta (o cualquiera después de la llamada por PHP al SP, me arroja el mismo error...

Necesito ayuda por favor, no sé como arreglar el problema, no sé si el error está en PHP (que en muchas partes he leido que tengo que usar un mysqli_next_result , pero no estoy usando esa API de PHP para MySQL, utilizo: DB_MySQL una clase para conexión (es un sistema que tengo que arreglar, no he seleccionado yo las librerías)

GRACIAS TOTALES!!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil
Val: 20
Ha disminuido su posición en 25 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

EXPERTOS POR FAVOR: Commands out of sync; you can't run this command now

Publicado por Gonzalo (103 intervenciones) el 18/04/2016 21:55:23
La librería MYSQL de PHP para acceso a MySQL no permite recuperar datos en forma de tabla generados por SP. Es algo perfectamente documentado en el mismo siito oficial de PHP.

La solución es cambiar a MYSQLI, o bien usar PDO.

No es un problema de MySQL, sino de PHP....
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

EXPERTOS POR FAVOR: Commands out of sync; you can't run this command now

Publicado por Rolando (10 intervenciones) el 18/04/2016 22:08:59
Gracias Gonzalo!!

Pero el mismo evento lo ejecuto otras veces sin problema... será que algo me queda abierto en el SP??? por que hago esto:
1.- Llamo al SP
2.- Tomo la salida
3.- Continuo con el sistema...

Y lo hago en varias partes, sólo en un lugar me genera problemas... será otra cosa? por que como te digo, en otros lados funciona sin problemas.

Te agradezco la ayuda de todas formas.

PD: Podremos verlo mejor si te envío los archivos??
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

EXPERTOS POR FAVOR: Commands out of sync; you can't run this command now

Publicado por Rolando (10 intervenciones) el 19/04/2016 15:19:46
Gracias Gonzalo por tu ayuda... hice ambas cosas y como 10 más que he encontrado en foros y no pasa nada... quizás por debajo como esté usando el sistema las consultas, por que es un sistema muy robusto y sólo tengo hasta el viernes para terminar los arreglos.

Lo solucioné creando un objeto de conexión a la base de datos exclusivo para este procedimiento y lo mato terminando su ejecución... si me queda tiempo, analizaré con más detención el tema.

Saludos y muchas gracias!

PD: El segundo link tenía información que no había leido!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

EXPERTOS POR FAVOR: Commands out of sync; you can"t run this command now

Publicado por KARIN (1 intervención) el 29/03/2018 03:31:31
Hola
Después de sufrir mucho por este tema, lo solucioné usando lo siguiente para liberar lo que sea que se queda pegado luego de llamar a un procedimiento, espero te sirva:

1
2
3
4
do
	if($result=mysqli_store_result($myconnection)){
		mysqli_free_result($result);
} while(mysqli_more_results($myconnection) && mysqli_next_result($myconnection));
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
3
Comentar
sin imagen de perfil
Val: 4
Ha disminuido su posición en 4 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

EXPERTOS POR FAVOR: Commands out of sync; you can"t run this command now

Publicado por Mauricio (1 intervención) el 05/02/2021 12:04:31
Muchas Gracias este codigo soluciono mi problema
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

EXPERTOS POR FAVOR: Commands out of sync; you can"t run this command now

Publicado por Ing. Jordan Garcia (1 intervención) el 21/12/2021 23:15:31
Esta es la solución definitiva no busquen ni lean mas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

EXPERTOS POR FAVOR: Commands out of sync; you can"t run this command now

Publicado por pilar (1 intervención) el 24/05/2022 18:58:08
Hola :) por favor me puedes decir donde ubico ese archivo para poder inserar la solucion que indicas, Te agradecería la respuesta. Gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

EXPERTOS POR FAVOR: Commands out of sync; you can"t run this command now

Publicado por Eduardo (1 intervención) el 14/03/2018 17:18:06
Hola,
Yo tuve el mismo problema(php 5.6 y MariaDB) y lo solucioné de la siguiente manera:

SP:
---

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
SET SESSION group_concat_max_len = 99999999;
 
    DROP TABLE IF EXISTS DB_cargas.TBL_FACTURAS_CUENTAS_SUSPENSION_PASO;
 
    CREATE TABLE DB_cargas.TBL_FACTURAS_CUENTAS_SUSPENSION_PASO
    SELECT
    EMAIL_DESTINATARIO,
    GROUP_CONCAT(DISTINCT MAIL_EDAC ORDER BY MAIL_EDAC ASC) AS MAIL_EDAC,
    MANDANTE,
    SUSPENSION,
    -- SERBANC,
    SUM(MONTO) AS TOTAL,
    NOMBRE,
    RUT,
    COUNT(RUT) AS N_DOCUMENTOS_VENCIDOS,
    GROUP_CONCAT(CUENTA,'; ',ESTADO_CUENTA,'; ', NRO_FACTURA, '; ', VENCIMIENTO, '; ', EMISION, '; ',MONTO SEPARATOR '; ') as DETALLETT
    FROM DB_cargas.TBL_FACTURAS_CUENTAS_SUSPENSION GROUP BY rut;
 
 
    SELECT * from DB_cargas.TBL_FACTURAS_CUENTAS_SUSPENSION_PASO;

---


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
 
    $conexionEscritura = CreaNuevaConexion();
 
    $sqlSP = "CALL MiBase.ProcedimientoAalmacenado();";
    $resultado = mysql_query($sqlSP, $conexionEscritura) or die("Error: \n".mysql_error()."\n".$sqlSP);
 
    while($registro = mysql_fetch_array($resultado)){
     .... /*Creacion de titulos para un archivo .csv con 'n' columnas como 'n' facturas de origen como filas*/
    }
 
    mysql_free_result($resultado);
    mysql_close($conexionEscritura);
    unset($resultado,$conexionEscritura);
 
    $conexionEscritura = CreaNuevaConexion();
 
    $sql2 = "SELECT * from DB_cargas.TBL_FACTURAS_CUENTAS_SUSPENSION_PASO;";
    $resultado_2 = mysql_query($sql2, $conexionEscritura) or die("Error: \n".mysql_error()."\n".$sql2);
 
    .... /*Creación de la data para un archivo .csv*/
 
    ?>

Utilizando las 3 líneas el php corrio [OK]:
1
2
3
mysql_free_result($resultado);
mysql_close($conexionEscritura);
unset($resultado,$conexionEscritura);

No funcionó con:
1
2
mysql_free_result($resultado);
mysql_close($conexionEscritura);
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil
Val: 2
Ha aumentado su posición en 16 puestos en MySQL (en relación al último mes)
Gráfica de MySQL

EXPERTOS POR FAVOR: Commands out of sync; you can"t run this command now

Publicado por Jesús Daniel (1 intervención) el 16/08/2018 15:08:12
Buen día.

Este tipo de problema se me presento directamente en mysql con phpMyadmin y me di cuenta que se presenta cuando realizas el llamado del procedimiento almacenado a una taba que aun no cuenta con datos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar