PC SOFT

FOROS PROFESIONALES
WINDEVWEBDEV y WINDEV Mobile

Inicio → WINDEV 2025 → Windev + MySQL distant : problème de reconnexion
Windev + MySQL distant : problème de reconnexion
Iniciado por daniel, 17,jul. 2020 13:12 - 4 respuestas
Miembro registrado
28 mensajes
Publicado el 17,julio 2020 - 13:12
Bonjour,

J'essaie de mettre en place une reconnexion à la base MySQL hebergée, pour éviter à mon client de devoir relancer l'application.

J'ai créé une fonction perso HHExecuteRequeteSQL qui fait une lecture de vérification d'une table pour tester si la connexion est toujours valide :

Procedure HHExécuteRequêteSQL(sdReq est une Source dede Données, sSQL est une chaîne)

QUAND EXCEPTIONEXCEPTION DANS
HLitPremier(Keywords)
FAIRE
Trace("Erreur Lecture Keywords...")
SI HReconnecte() ALORS
//si HOuvreConnexion(MaConnMySQLTEST) alors
//si HChangeConnexion("*",MaConnMySQLTEST) alors
Trace("connexion ok")
HLitPremier(Keywords)
SINON
Trace("Erreur connexion")
FIN
FIN

SI PAS HExécuteRequêteSQL(sdReq, hRequêteDéfaut, sSQL) ALORS
Trace(ErreurInfo())
SINON
Trace("la requete contient " + HNbEnr(sdReq) + " enregs")
FIN

CAS ERREUR:
Trace("CAS ERREUR")


Pour cette fonction, j'ai coché "Utiliser le traitement d'erreur automatique + "CAS ERREUR" dans le code, pour pouvoir traper l'erreur du premier HLitPremier(Keywords).

Mon HLitPremier(Keywords) plante quand la connexion est perdue, ça c'est ok.

Par contre j'ai essayé divers choses pour me reconnecter :
- HOuvreConnexion
- HReconnecte
- HChangeConnexion. ...

... mais même si ces commandes ne retournent pas d'erreurs, le HLitPremier de vérif qui suit plante, je ne suis pas reconnecté, ou pas correctement.

Avez-vous déjà dû créer ce genre de code pour pallier aux timeout MySQL ? Je ne peux pas modifier la valeur du timeout chez cet hebergeur...

Merci pour votre aide ou vos idées.

Daniel
Miembro registrado
1.173 mensajes
Publicado el 20,julio 2020 - 15:40
Bonjour,

L'hébergeur autorise-t-il la connexion depuis un accès distant ?
Pour lever l'exception ne faudrait-il pas ajouter un ExceptionActive() en fin de traitement

--
Thierry TILLIER
Développeur Windev-Webdev
Formation Windev : https://coursdinfo.teachable.com/
Formation bureautique : https://coursdinfo.net
Miembro registrado
28 mensajes
Publicado el 20,julio 2020 - 22:58
Merci pour votre aide.

Oui l'hébergeur accepte les accès distants, il suffit de déclarer l'ip sur le portail. Ca marche très bien, mais si on reste inactif sur l'application, la connexion à la base est coupée, et je n'arrive pas à faire une reconnexion "à chaud". Je détecte bien que ça ne répond plus, grace a mon HLitPremier, mais ensuite je ne sais pas quoi faire, les commande HOuvreConnexion ou HREconnecte répondent Vrai, mais quand je refais un HLitPremier juste derrière ça ne fonctionne pas...

Après ma reconnexion il faudrait que je fasse un ExecptionActive pour remettre à blanc l'erreur ?
Miembro registrado
1.173 mensajes
Publicado el 21,julio 2020 - 08:57
ExceptionActive n'est utile que s'il a une Exception qui est levée.

j'essaierai avec cette syntaxe
HExécuteRequêteSQL(sdReq,MaConnMySQLTEST, hRequêteSansCorrectionHF, sSQL)


ou en mettant HlibereRequete à la fin de la procédure.

--
Thierry TILLIER
Développeur Windev-Webdev
Formation Windev : https://coursdinfo.teachable.com/
Formation bureautique : https://coursdinfo.net
Miembro registrado
1.173 mensajes
Publicado el 21,julio 2020 - 08:58
*s'il y a

--
Thierry TILLIER
Développeur Windev-Webdev
Formation Windev : https://coursdinfo.teachable.com/
Formation bureautique : https://coursdinfo.net