FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour Recuperar conexi贸n ADO mysql
Posts: 1818
Joined: Wed Oct 26, 2005 02:49 PM

Recuperar conexi贸n ADO mysql

Posted: Wed Jun 12, 2024 10:12 PM
Hola buenas tardes para todos,

De nuevo nosotros aqu铆 molestando, es que en algunas ocasiones, generalmente con conexiones remotas v铆a internet, el controlador de errores de fw nos devuelve el siguiente error:


Despu茅s de mostrar ese error la aplicaci贸n se revienta, queremos saber si es posible recuperar la conexi贸n y evitar la molestia al usuario de tener que salir de la aplicaci贸n y volver a ingresar para recuperar la conexi贸n.
Saludos
LEANDRO AREVALO
Bogot谩 (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Turbo Incremental Link64 6.98 Embarcadero 7.70 ] [ FiveWin 25.01 ] [ xHarbour 64 bits) ]
Posts: 44162
Joined: Thu Oct 06, 2005 05:47 PM

Re: Recuperar conexi贸n ADO mysql

Posted: Thu Jun 13, 2024 05:33 AM
El mensaje de error en la imagen indica que la conexi贸n al servidor MySQL se ha perdido. El error espec铆fico es "MySQL server has gone away", que corresponde al c贸digo de error nativo 2006. Este problema puede ser causado por varios factores, entre ellos:

Tiempo de espera del servidor: El servidor MySQL podr铆a haber cerrado la conexi贸n debido a inactividad o tiempo de espera. Esto se puede configurar en la configuraci贸n del servidor MySQL.
Consulta grande: Una consulta podr铆a ser demasiado grande y el servidor no puede procesarla dentro del tama帽o de paquete permitido. Esto se puede ajustar cambiando la configuraci贸n max_allowed_packet en MySQL.
Problemas de red: Problemas intermitentes de red podr铆an causar la ca铆da de la conexi贸n.
Sobrecarga del servidor: El servidor podr铆a estar bajo una carga pesada y no puede manejar la solicitud.
Soluciones
Aumentar los tiempos de espera:

Ajusta las configuraciones wait_timeout e interactive_timeout en la configuraci贸n del servidor MySQL (my.cnf o my.ini).
sql
Copiar c贸digo
SET GLOBAL wait_timeout = 28800;
SET GLOBAL interactive_timeout = 28800;
Aumentar max_allowed_packet:

Modifica la configuraci贸n max_allowed_packet a un valor m谩s alto en la configuraci贸n del servidor MySQL.
sql
Copiar c贸digo
SET GLOBAL max_allowed_packet = 64 * 1024 * 1024;
Optimizar las consultas:

Divide las consultas grandes en partes m谩s peque帽as si es posible.
Verificar la estabilidad de la red:

Aseg煤rate de que la conexi贸n de red entre el cliente y el servidor sea estable.
Monitorear la carga del servidor:

Utiliza herramientas de monitoreo para verificar la carga en el servidor MySQL y optimizar el rendimiento del servidor.
Pasos para aplicar los cambios
Editar la configuraci贸n de MySQL:

Localiza el archivo de configuraci贸n de MySQL (my.cnf o my.ini).

A帽ade o modifica las siguientes configuraciones:

ini
Copiar c贸digo
[mysqld]
wait_timeout = 28800
interactive_timeout = 28800
max_allowed_packet = 64M
Reiniciar el servidor MySQL:

Despu茅s de hacer los cambios en el archivo de configuraci贸n, reinicia el servidor MySQL para aplicar los cambios.
sh
Copiar c贸digo
sudo service mysql restart
Si necesitas m谩s ayuda o instrucciones espec铆ficas sobre c贸mo editar los archivos de configuraci贸n y reiniciar el servidor seg煤n tu sistema operativo, por favor, h谩zmelo saber.
regards, saludos

Antonio Linares
www.fivetechsoft.com
Posts: 1144
Joined: Mon Feb 05, 2007 07:15 PM

Re: Recuperar conexi贸n ADO mysql

Posted: Thu Jun 13, 2024 07:12 PM
Cual es la diferencia en usar ADO y no la conexi贸n nativa de FWH ? :shock:
Code (fw): Select all Collapse
聽 聽 聽 FWCONNECT oServer HOST cServer ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 USER cUser ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 PASSWORD cPassword ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 PORT nPort ;
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 FLAGS nFlags
聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 聽 && DATABASE cDBName
SALUDOS !
Cesar Cortes Cruz

SysCtrl Software

Mexico



' Sin +- FWH es mejor "
Posts: 476
Joined: Sat Feb 03, 2007 06:36 AM

Re: Recuperar conexi贸n ADO mysql

Posted: Fri Jun 14, 2024 11:58 AM
leandro wrote:Hola buenas tardes para todos,

De nuevo nosotros aqu铆 molestando, es que en algunas ocasiones, generalmente con conexiones remotas v铆a internet, el controlador de errores de fw nos devuelve el siguiente error:


Despu茅s de mostrar ese error la aplicaci贸n se revienta, queremos saber si es posible recuperar la conexi贸n y evitar la molestia al usuario de tener que salir de la aplicaci贸n y volver a ingresar para recuperar la conexi贸n.
Hola Leandro,
A mi me ha pasado lo mismo, utilizando Eagle1 para conectarme a MySQL, tengo configurado el mismo como indica Antonio, pero como tu dices, tengo clientes que se conectan a MySQL en un servidor VPS en la nube por medio de internet, y es cuando mas sucede este problema de "MySQL server has gone away"

Si te sirve de algo, he minimizado un poco el problema utilizando un timer al inicio de mi aplicaci贸n y ejecutar una funci贸n para hacer una llamada al MySQL con un query sencillo, para mantener la conexi贸n con el mismo:
Code (fw): Select all Collapse
...
聽oTimerTime := TTimer():New( 2500, { || VER_MYSQL() } )
...
*************************
FUNCTION VER_MYSQL() 
*************************
Local aux, cSql, cCod, oSql, lnot

聽 聽 TRY
聽 聽 聽 聽 oSql := TsTable( "inventario" )
聽 聽 聽 聽 cSql := "SELECT id_codigo FROM inventario LIMIT 1"
聽 聽 聽 聽 oSql:Open( cSql )
聽 聽 CATCH

聽 聽 END 
Return .t.
Pero, algunas veces por conexiones de internet se pierde la se帽al con el servidor VPS, se produce el error, y no hay manera de volver a recuperar la conexi贸n, mas que salir de la aplicaci贸n y volver a ingresar.

Espero te sirva algo lo anterior.

Saludos cordiales.

Carlos.
Posts: 1818
Joined: Wed Oct 26, 2005 02:49 PM

Re: Recuperar conexi贸n ADO mysql

Posted: Fri Jun 14, 2024 02:42 PM
Carlos gracias por responder...

Si tambi茅n tenemos esa misma opci贸n que tu dices, con eso logramos mantener la conexi贸n, el problema es cuando realmente la conexi贸n se cae por completo, ya se por que se cayo el internet, el usuario desconecta el cable de red o la red inal谩mbrica.
sysctrl2 wrote:Cual es la diferencia en usar ADO y no la conexi贸n nativa de FWH ?
Cesar no hab铆a pensando en esa opci贸n, no se si funcione, ya que todas las conexi贸nes las hacemos con la funci贸n ADO de fw.
Code (fw): Select all Collapse
oCnEmp := FW_OpenAdoConnection( cCnd )

Voy a intentarlo a ver si funciona.

Cualquier cosa vuelvo y comento.
Saludos
LEANDRO AREVALO
Bogot谩 (Colombia)
https://hymlyma.com
https://hymplus.com/
leandroalfonso111@gmail.com
leandroalfonso111@hotmail.com

[ Turbo Incremental Link64 6.98 Embarcadero 7.70 ] [ FiveWin 25.01 ] [ xHarbour 64 bits) ]
Posts: 104
Joined: Tue Feb 09, 2021 04:20 PM

Re: Recuperar conexi贸n ADO mysql

Posted: Sat Oct 26, 2024 04:29 PM

S茅 que este tema es antigo, pero no vi ning煤n comentario sobre esto:

Not茅 en el mensaje de error que se est谩 utilizando odbc 3.51

ODBC 3.51 es malo.

Ha passado mucho tiempo, no recuerdo cu谩l era el comando.

Mismo SELECT simple, odbc 3.51 caus贸 desconexi贸n, pero odbc 5.3 ning煤n problema.

Nunca volvi a usar odbc 3.51 despu茅s de eso.

Y en ConnectionString de 5.3 agrego esto: AUTO_RECONNECT=1;

Jos茅 M. C. Quintas Brazil

gtwvg, fivewin 25.12, hwgui, mingw 15.2 (32 bits)

Continue the discussion