MySql remoto
Posted: Thu Mar 25, 2021 4:03 pm
Saludos amigos,
Estoy migrando mi sistema para boticas y farmacias de HMG/DBF a HMG/MySQL. Será una versión multi-sucursal por lo que el MySQL es remoto (alojado en un hosting) y la verdad estoy entusiasmado porque la velocidad de respuesta esta genial (tengo un plan de internet de 60mbps ni siquiera es simétrico). La verdad empecé con temor pero ahora sigo adelante con el proyecto.
Mi duda es la siguiente, este es mi código de conexión a la base de datos remota:
Todo va bien, pero sucede que, cada cierto tiempo, me lanza este error:
Para resolverlo antes de cada query debo llamar al procedimiento INIMYSQL:
Mis dudas:
- Si es un tema de configuración en el MySQL del host (imagino que del tiempo de espera), así suba el tiempo ¿ igual en algún momento me seguiría lanzando ese error ?
- ¿ Deberé hacer reconexión al server antes de cada query obligatoriamente ?
- ¿ Cual sería el esquema para evitar que al cliente le lance ese error - continuo con la solución que le he dado o hay otra forma ?
Agradeceré sus sugerencias al respecto. Como siempre, deseando que Ustedes y sus familiares gocen de salud plena.
Cordiales saludos a todos.
Estoy migrando mi sistema para boticas y farmacias de HMG/DBF a HMG/MySQL. Será una versión multi-sucursal por lo que el MySQL es remoto (alojado en un hosting) y la verdad estoy entusiasmado porque la velocidad de respuesta esta genial (tengo un plan de internet de 60mbps ni siquiera es simétrico). La verdad empecé con temor pero ahora sigo adelante con el proyecto.
Mi duda es la siguiente, este es mi código de conexión a la base de datos remota:
Code: Select all
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
* FUNCION...: INIMYSQL
* COMENTARIO: CONECTA CON EL SERVIDOR SQL
*-------------------------------------------------------------------------
*-------------------------------------------------------------------------
PROC INIMYSQL
LOCAL aDataConect , cSqlURL , cSqlUSR , cSqlPSW , cSqlDB
IF ! FILE('Imagen\IPAddress.txt')
Win_InfoFarma.Release
ENDIF
aDataConect := Txt2Array( 'Imagen\IPAddress.txt' )
cSqlURL := aDataConect[1]
cSqlUSR := aDataConect[2]
cSqlPSW := aDataConect[3]
cSqlDB := aDataConect[4]
// Connect
oServer := TMySQLServer():New( cSqlURL , cSqlUSR , cSqlPSW )
// Check For Error
If oServer:NetErr()
MsgStop('ERROR:'+oServer:Error())
Win_InfoFarma.Release
Else
oServer:SelectDB( cSqlDB )
If oServer:NetErr()
Win_InfoFarma.Release
MsgStop("No se pudo conectar a la BD infofarma: "+oServer:Error() )
else
Win_InfoFarma.StatusBar.Item(1) := 'Conectado.'
Endif
EndIf
RETURN
Para resolverlo antes de cada query debo llamar al procedimiento INIMYSQL:
Code: Select all
INIMYSQL() //<-vuelvo a conectar
qRead := "SELECT * "+;
"FROM ventas_cab "+;
"INNER JOIN ventas_det ON vc_id = vd_id "+;
"INNER JOIN articulos ON vd_arti_id = articulo_id "+;
"LEFT JOIN clientes ON vc_clie_id = clie_id "+;
"LEFT JOIN ubigeos ON clie_ubigeo = ubigeo_id "+;
"WHERE vc_id = "+cNumOpeVta+" "+;
"ORDER BY vd_item"
oRead := oServer:Query( qRead )
IF ! oRead:NetErr()
IF oRead:LastRec() > 0
rRead := oRead:GetRow(1)
...
ENDIF
ELSE
MsgStop ( oRead:Error() )
ENDIF
oRead:Destroy()
- Si es un tema de configuración en el MySQL del host (imagino que del tiempo de espera), así suba el tiempo ¿ igual en algún momento me seguiría lanzando ese error ?
- ¿ Deberé hacer reconexión al server antes de cada query obligatoriamente ?
- ¿ Cual sería el esquema para evitar que al cliente le lance ese error - continuo con la solución que le he dado o hay otra forma ?
Agradeceré sus sugerencias al respecto. Como siempre, deseando que Ustedes y sus familiares gocen de salud plena.
Cordiales saludos a todos.