MySql remoto

HMG en Español

Moderator: Rathinagiri

Post Reply
User avatar
edufloriv
Posts: 247
Joined: Thu Nov 08, 2012 3:42 am
DBs Used: DBF, MariaDB, MySQL, MSSQL, MariaDB
Location: PERU

MySql remoto

Post by edufloriv »

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:

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
Todo va bien, pero sucede que, cada cierto tiempo, me lanza este error:
lostconex.png
lostconex.png (13.37 KiB) Viewed 1515 times
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()

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.

Eduardo Flores Rivas


LIMA - PERU
martingz
Posts: 408
Joined: Wed Nov 18, 2009 11:14 pm
Location: Mexico

Re: MySql remoto

Post by martingz »

Eduardo en la oficina aumentamos el tiempo de espera y no nos ha pasado otra vez, pero en algunas lecturas no recomiendan mantener abierta la sesion
recomiendan tu segunda opcion


saludos
User avatar
salamandra
Posts: 311
Joined: Thu Jul 31, 2008 8:33 pm
DBs Used: DBF, MySQL, SQL
Location: Brazil

Re: MySql remoto

Post by salamandra »

Hola @martingz y @ edufloriv,
martingz wrote: Thu Mar 25, 2021 4:34 pm Eduardo en la oficina aumentamos el tiempo de espera y no nos ha pasado otra vez, pero en algunas lecturas no recomiendan mantener abierta la sesion
recomiendan tu segunda opcion


saludos
Realmente no es recomendable mantener la sesión abierta pues de esa manera el servidor consume muchos recursos.
Lo mas aconsejable es que la sesión sea finalizada hasta la próxima consulta.


Saludos,


Salamandra, Brazil
There is one time in which is crucial awakening. That time is now. ( Buddha )
User avatar
Claudio Ricardo
Posts: 367
Joined: Tue Oct 27, 2020 3:38 am
DBs Used: DBF, MySQL, MariaDB
Location: Bs. As. - Argentina

Re: MySql remoto

Post by Claudio Ricardo »

Hola Eduardo...
Yo hago un conección cada vez (como tu segunda opción) salvo cuando son consultas consecutivas.
Esta función acepta un cuarto parámetro que es el puerto (normalmente 3306) renegué bastante con
eso hasta descubrirlo.
oServer := TMySQLServer():New( cSqlURL , cSqlUSR , cSqlPSW )
Yo la utilizo asi:
oServer := TMySQLServer ():New (cHostName,cUserName,cPassWord,nHostPort)
y puedo conectar con otro port que no sea el por default.
Corrige al sabio y lo harás más sabio, Corrige al necio y lo harás tu enemigo.
WhatsApp / Telegram: +54 911-63016162
User avatar
Claudio Ricardo
Posts: 367
Joined: Tue Oct 27, 2020 3:38 am
DBs Used: DBF, MySQL, MariaDB
Location: Bs. As. - Argentina

Re: MySql remoto

Post by Claudio Ricardo »

El config queda algo así:
Screenshot_20210326_011227.png
Screenshot_20210326_011227.png (49.27 KiB) Viewed 1444 times
Es de un programa para inmobiliarias que estoy haciendo en ratos libres...
Corrige al sabio y lo harás más sabio, Corrige al necio y lo harás tu enemigo.
WhatsApp / Telegram: +54 911-63016162
Post Reply