MySql: Connectivity error: Estado del cursor no valido.

161 views
Skip to first unread message

Mauricio Molinero,

unread,
Aug 18, 2010, 10:21:10 AM8/18/10
to Comunidad de Visual Foxpro en Español
Hola,

Hace bastante que vengo trabajando con MySql, y desde hace unos dias
obtengo el siguiente mensaje de error,

MySql: Connectivity error: Estado del cursor no valido.

Siempre Conecto, ejecuto un par de consultas y despues aparece el
error hasta que vuelvo a desconectar.

Les agradeceria un poco de ayuda,

Mauricio R. Molinero,

almonts ( www.ontarioxb.es )

unread,
Aug 19, 2010, 2:24:21 AM8/19/10
to Comunidad de Visual Foxpro en Español
Uffff. Podrias ser un poco mas explicito, por favor ?
Es para que te podamso ayudar.

Mauricio Molinero,

unread,
Aug 19, 2010, 7:57:42 AM8/19/10
to Comunidad de Visual Foxpro en Español
Gracias por responder, es que en realidad no tengo mucha mas
informacion, conecto, ejecuto un par de consultas pequeñas y simples y
me da ese error.
Tambien me ha dado:

MySQL Connection (aqui me muestra el string de conexion) is busy

Algo particular es que estoy conectando como root desde una pc remota.

Saludos!,

Armando Rodríguez

unread,
Aug 19, 2010, 10:55:26 AM8/19/10
to publice...@googlegroups.com
Checa el timeout en la configuración del server de MySql. A mi me pasa lo
mismo con mi proveedor de hosting. Puedo conectarme a la base de datos por
el puerto 3306, pero solo dura 40 segundos activa si no hay actividad. Pero
agregué un timer con una consulta a una tabla vacia cada 30 segundos para
que no se cierre la conexión.

Suerte
Armando

-----Mensaje original-----
De: publice...@googlegroups.com
[mailto:publice...@googlegroups.com] En nombre de Mauricio Molinero,
Enviado el: Jueves, 19 de Agosto de 2010 06:58 a.m.
Para: Comunidad de Visual Foxpro en Español
Asunto: [vfp] Re: MySql: Connectivity error: Estado del cursor no valido.

Mauricio Molinero,

unread,
Aug 19, 2010, 7:37:39 AM8/19/10
to Comunidad de Visual Foxpro en Español
Gracias por responder, es que en realidad no tengo mucha mas
informacion porque es un error que aparece luego de varias consultas
normales al motor MySQL y no logro darme cuenta porque.

Este es el codigo segun MySQL

Native error SQLState2 SQLState3
511 24000 24000 Invalid cursor state

Ahora otro error que aparecio es "MySQL Connection (aca me muestra
todo el string de conexion) is busy"

Una particularidad es que estoy conectando como root desde otra pc
remota.

Quienes usan MySQL es realmente estable?
estoy pasando por alto alguna consideracion?

Saludos!,

Mauricio R. Molinero,

Daniel Sánchez

unread,
Aug 19, 2010, 1:29:13 PM8/19/10
to publice...@googlegroups.com
El caso de "is busy" me parece que es porque quieres realizar otra consulta en otra tabla o en la misma, y la consulta anterior no termina de traer todos los datos, en todo caso tendrías que poner o indicar el modo de traer los datos desde el servidor en el caso de usar los cursoradapters hay una opción indicada o titulada de la siguiente manera "Number of records to fetch at a time" y tiene el valor por defecto de 100, esto significa que cada 100 registros te va ir trayendo los datos, el problema con este método es que después de la consulta, así no termine de traer todos los datos, pasa a la siguiente instrucción a ejecutar en tu programa, sin son muchas filas la conexión se encuentra aun ocupada recibiendo los datos, y si tu siguiente instrucción es hacer otra consulta sobre alguna otra tabla no vas ha poder y te dará el mensaje que se encuentra ocupado "is busy", para evitar esto en tablas que es posible que tenga muchas filas es cambiar el valor de "Number of records to fetch at a time" a que obtenga todos los datos antes de que permita ejecutar la siguiente línea de código, para eso le das el valor de -1 en la opción FetchSize en el cursoradapters, en el método directo con sqlpasstrue no te podría indicar cual es su etiqueta pero por ahí podrías buscar su equivalente.

Espero no haberme desplayado demasiado, y este claro.


--
Daniel Sánchez Escobar
Investigación y Desarrollo
Reset Software & Sistemas
Móvil 044-949398047
Trujillo - Perú

Mauricio Molinero,

unread,
Aug 19, 2010, 5:49:08 PM8/19/10
to Comunidad de Visual Foxpro en Español
OK, gracias Daniel seguramente sea eso porque estaba haciendo pruebas
sobre el IDE, lo voy a tener en cuenta para la proxima.
Gracias Armando tambien, en mi caso el timeout esta muy amplio y
cuando se supera ese tiempo creo que el error es "Server is gone" o
algo asi.


Ahora estoy probando la aplicacion compilada y no estoy teniendo
errores complicados, solamente de sintaxis o porciones de codigo que
trabaja sobre tablas nativas.

Saludos!

Mauricio R. Molinero,

almonts ( www.ontarioxb.es )

unread,
Aug 20, 2010, 2:24:27 AM8/20/10
to Comunidad de Visual Foxpro en Español
Hola Mauricio.
Si estas utilizando tablas InnoDB. (Lo mas normal)
Habre tu fichero MY.INI de configuración con el notepad y al final de
todo le añades la siguiente linea:

innodb_lock_wait_timeout=300

Esto configura una espera de 5 minutos. Si existiese un "deadlock", o
una consulta que consume todos los recursos de la base de datos.
300 segundos son 5 minutos, pero puedes jugar con esos valores.
El MySQL trae por defecto configurado solo 2 segundos.

Piensa que si realizas una consulta que no está bien optimizada.
Puedes consumir todos los recursos del MySQL. Y dejar el servidor como
"bloqueado".
Si quieres saber como uptimizar una consulta antes del select
introduce el comando "EXPLAIN".
Este te mostrará información muy detallada de la misma, tiempos,
indices que utiliza etc. etc.
Un saludo desde España.


Mauricio Molinero,

unread,
Aug 20, 2010, 8:10:09 AM8/20/10
to Comunidad de Visual Foxpro en Español
Muchas gracias, de a poco me voy familiarizando con MySql.

Interesante el comando EXPLAIN no lo habia visto.

En la lista de variables que muestra SHOW STATUS no me muestra
'innodb_lock_wait_timeout' porque quiero verificar el valor actual
antes de cambiarlo.

Pero segun la ayuda este parametro actualmente esta en 50 segundos.

innodb_lock_wait_timeout

The timeout in seconds an InnoDB transaction may wait for a row lock
before giving up. The default value is 50 seconds

Y el mensaje de error es este: "ERROR 1205 (HY000): Lock wait timeout
exceeded; try restarting transaction"

Mauricio R. Molinero,
Reply all
Reply to author
Forward
0 new messages