PDA

Ver la Versión Completa : has gone away MySql - Delphi


Yun-i
28-04-2012, 19:13:09
Hola Foristas antes que nada les digo que el tema ya lo busque en el foro y a pesar de que hay varias entradas que comentan que es por el tiempo de espera del servidor y que son servidores remotos a mí me da este error en ambos servidores (remoto y local), y no hay un tiempo fijo, pueden ser 2 min. 10 min, si pasar de 30 min. Y me sale ni siquiera en tiempo de ejecución, es durante que programo. No puedo acceder que se conecte a menos de que reinicio Delphi, y en tiempo de ejecución hay veces que no puedo hacer ni un insert cuando ya marco el error
has gone away.
Hay forma de que yo pueda refrescar la conexión? que no sea abriéndola y cerrándola porque una vez que marca ese error ya no me permite conectar.

Trabajo en delphi 7, Con componentes DBE.
Y el driver de conexión es el 5.1 de MySQL.
Gracias por su atención

AzidRain
28-04-2012, 20:09:53
No tiene que ver realmente con el servidor ya que MySQL mantiene las conexiones "abiertas" hasta que no se le diga lo contrario o bien pase un cierto tiempo. De hecho el servidor solo sabe que un cliente se desconecta cuando se le envía el mensaje correspondiente, mientras tanto da por hecho que el cliente sigue ahí. Lo que te sucede es un síntoma de problemas de conexión físicos ya sea tu línea de internet, cableado, router, etc. Tu programa está bien por lo que no hay que tocar código, solamente revisar los puntos ya mencionados.

Una solución chapucera es verificar la conexión antes de entrar a un proceso y en caso de que se haya perdido (te saldrá la excepción que mencionas) cerrarla y volver a establecerla.

Yo tengo un sistema de facturas conectado a un servidor MySQL desde diferentes sucursales y siempre que se me ha preentado ese error ha sido por falla de la conexión a internet.

Yun-i
28-04-2012, 20:28:43
Coincido contigo pienso que es algo en la red, pero sabrás que los administradores de red no lo van a aceptar en fin, en teoría solo debe estar abierto el puerto 3306 y como no lo tienen bloqueado van a decir que no es eso pero bueno, respecto a lo que me comentas de restablecer la conexión intento hacerlo con la propiedad conected, pero simplemente me vuelve a mandar el error la única solución es abrir y cerrar Delphi y en caso de que este en tiempo de ejecución pues solo cerrando y volviendo a abrir, el problema es cuando no me permite hacer nada por que manda el error. Si tienes un concejo de como reconectar de otra forma te agradecería el apoyo.


Gracias nuevamente

roman
30-04-2012, 17:11:23
Hay muchísimas causas por las que puede suceder este error, no necesariamente por una desconexión. No está de más que le eches un ojo a esta parte del manual (http://dev.mysql.com/doc/refman/5.0/en/gone-away.html), para ver si hay algo que puedas corregir.

// Saludos

darkerbyte
11-05-2012, 08:19:45
A mi me pasa exactamente lo mismo y utilizo Zeoslib.

Inclusive, aunque tengo MySQL server y mi aplicacion corriendo en la misma computadora, al dejar pasar tiempo sin usar la aplicación el servidor cierra automaticamente la conexión. Y cuando el usuario retoma el uso de la aplicacion se topa con este mensage de error. Lo que me ha livianado es que el componente de Zeos Zconection tiene un procedimiento reconect
Entonces cuando tenemos este error el usuario tiene un boton en el form para reactivar la conexión.
Pero no debe funcionar así. He buscado maneras de corregirlo y no lo consigo.
Lo ideal seria cachar esta excepción en el componente ZConection y entonces dentro de la excepción llamar al procedimiento reconect. Si no es posible conectarlo, entonces, ahora si el problema puede ser la red o que el servidor se apagó, mostrar al usuario un mensage acorde.
Pero no logo como cachar la excepción. Y en general una aplicacion usa demasiadas QUerys y Tablas como para estar poniendo un Try en cada una. Aguien concoe un mecanismo que permita cachar la exepcion para cualquier consulta?
La otra cosa que pensé es poner un Timer que cada minutos, por ejemplo, este refrescando la conexión. Seria recomendable poner el timer? o consumiria demasiado procesador?

Gracias por vuestros consejos.

pepe2000
06-08-2013, 02:44:13
No se si habrán solucionado este problema de la conexion con Zeos, pero de ser así, podrían colocar aquí como es que lo hicieron?

Muchas Gracias.