Foros del Web » Programando para Internet » PHP »

Error al consultar mas de 2 procedimientos almacenados

Estas en el tema de Error al consultar mas de 2 procedimientos almacenados en el foro de PHP en Foros del Web. Hola a todos, Estoy realizando una consulta a mi base de datos a través de procedimientos almacenados en MySQL para el listado de registros; todo ...
  #1 (permalink)  
Antiguo 16/06/2017, 17:58
 
Fecha de Ingreso: agosto-2006
Ubicación: Girardot
Mensajes: 27
Antigüedad: 11 años, 2 meses
Puntos: 2
Pregunta Error al consultar mas de 2 procedimientos almacenados

Hola a todos,

Estoy realizando una consulta a mi base de datos a través de procedimientos almacenados en MySQL para el listado de registros; todo ello se visualiza en dos select que tengo en mi formulario. Pero al momento de visualizar mi formulario tengo el siguiente error en pantalla:

Código:
Fatal error: Uncaught PDOException: SQLSTATE[HY000]: General error: 2014 Cannot execute queries while 
other unbuffered queries are active. Consider using PDOStatement::fetchAll().

Alternatively, if your code is only ever going to run against mysql,
you may enable query buffering by setting the PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute.
Indagando al respecto modifique mi archivo de conexión a la base de datos (adicionando: $dbCon->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY , true);) para poder trabajar adecuadamente:

Código:
$dbCon = new PDO(DB_DRIVER . ':host=' . DB_HOST . '; dbname=' . DB_NAME, DB_USER, DB_PASS);
		#$dbCon->exec("SET CHARACTER SET utf8");
		
		$dbCon->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
		$dbCon->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
    $dbCon->setAttribute(PDO::MYSQL_ATTR_USE_BUFFERED_QUERY, true);
		#$dbCon->setAttribute(PDO::ATTR_PERSISTENT, true);
		return ($dbCon);
Y estas son mis consultas las cuales llamo mis dos procedimientos almacenados:

Código:
$sqlAseguradoras = "call spAseguradora_info()";
$qryAseguradoras = $dbCon->prepare($sqlAseguradoras);
$qryAseguradoras->execute();

$sqlRamos = "call spRamo_info()";
$qryRamos = $dbCon->prepare($sqlRamos);
$qryRamos->execute();
¿Alguien a tenido este inconveniente en el pasado o solucionado el error tipo:
Código:
2014 Cannot execute queries while other unbuffered queries are active.
?

De ante mano agradezco cualquier sugerencia, muchas gracias por su atención.
  #2 (permalink)  
Antiguo 18/06/2017, 20:02
Avatar de Turdo  
Fecha de Ingreso: julio-2005
Ubicación: .:Guadalajara:.
Mensajes: 398
Antigüedad: 12 años, 2 meses
Puntos: 23
Respuesta: Error al consultar mas de 2 procedimientos almacenados

Allí literalmente te dice que no puede ejecutar mas queries (consultas) mientras otra consulta esta activa sin almacenar en la memoria. En otras palabras debes de soltar los resultados de la primer consulta y almacenarla en una variable.

Si observas en el primer error te menciona que consideres usar fetchAll(). Y eso te lo dice para que despache todos los resultados.
Código MySQL:
Ver original
  1. Fatal error: Uncaught PDOException: SQLSTATE[HY000]: General error: 2014 Cannot execute queries while
  2. other unbuffered queries are active. Consider using PDOStatement::fetchAll().
  3.  
  4. Alternatively, if your code is only ever going to run against mysql,
  5. you may enable query buffering by setting the PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute.
__________________
Un buen programa depende de la imaginación.
  #3 (permalink)  
Antiguo 18/06/2017, 20:04
Avatar de Turdo  
Fecha de Ingreso: julio-2005
Ubicación: .:Guadalajara:.
Mensajes: 398
Antigüedad: 12 años, 2 meses
Puntos: 23
Respuesta: Error al consultar mas de 2 procedimientos almacenados

Allí literalmente te dice que no puede ejecutar mas queries (consultas) mientras otra consulta esta activa sin almacenar en la memoria. En otras palabras debes de soltar los resultados de la primer consulta y almacenarla en una variable.

Si observas en el primer error te menciona que consideres usar fetchAll(). Y eso te lo dice para que despache todos los resultados.
Cita:
Iniciado por Turdo Ver Mensaje
Fatal error: Uncaught PDOException: SQLSTATE[HY000]: General error: 2014 Cannot execute queries while
other unbuffered queries are active. Consider using PDOStatement::fetchAll().

Alternatively, if your code is only ever going to run against mysql,
you may enable query buffering by setting the PDO::MYSQL_ATTR_USE_BUFFERED_QUERY attribute.
__________________
Un buen programa depende de la imaginación.



La zona horaria es GMT -6. Ahora son las 15:08.