Bonjour,
je rencontre de nombreux problèmes avec les connecteurs natifs sur une base mySQL hébergée. Initialement un moteur myISAM suffisait mais il devrait être remplacé par un innoDB dans la prochaine version. Le programme a été développé en Lazarus, il y a 2 ans maintenant et je dois le réactualiser. Il fonctionne sous Win, Nux et un Mac
- Avec les connecteurs natifs, sous innoDB, il semble que le verrouillage des lignes fonctionnent mal enfin plus exactement leur déverrouillage. Je bloque une ligne de la table (en transactionnel Autocommit = 0 + serializable) sur un serveur 5.0.90 par une requête genre
- SELECT usNOM FROM taUsers WHERE usID = :pausID FOR UPDATE;
et débloque par un
- UPDATE taUsers SET usNOM = :paNOM WHERE usID = :pausID;
en prenant les précautions d'usages avec les commit et rollback de rigueur.
Je viens d'installer Zeos7. Un code équivalent à celui utilisé pour les connecteurs natifs fonctionne correctement. Mais avec ces derniers, je n'arrive pas à déverrouiller sauf à déconnecter le MySQL50Conn. Il y a une particularité à connaître ?
- Autre problème : la connexion n'est pas persistante. Je n'ai pas le moyen "direct" de rendre la connexion persistante puisque l'hébergeur ne me permettra pas de modifier le paramètre connect_timeout du serveur mutualisé. Il n'y a pas de ping comme avec Zeos. Donc, régulièrement un thread exécute une requête simple pour maintenir la persistance. Or si ce thread s'effectue en même temps qu'une requête est lancée par l'utilisateur du programme, ce dernier plante. Le problème m'avait été signalé mais il est très peu fréquent et à l'époque, j'ai bien identifié le problème mais sans trouver de solution. Mais peut-être ai-je mal cherché ?
- Enfin avec les connecteurs natifs comme avec Zeos, je ne sais pas s'il existe un moyen de réduire le temps d'attente (sur ma base 60 s) pour être informé que l'enregistrement est bloqué : avec pgSQL, je dispose d'un FOR UPDATE NOWAIT inconnu par mySQL. Or dans l'attente de ce message, le programme "freeze". Impossible de bouger la Form... Un thread me semble mal habile pour régler ce genre de problème.
Question complémentaire : les Zeos7 fonctionnent-ils sous Mac OSX ? J''avais choisi à l'époque les connecteurs natifs à cause d'une certaine susceptibilité à l'installation des Zeos.
Bref, je cherche une solution économique en temps pour que cela fonctionne proprement. Plusieurs solutions :
- Remplacer les connecteurs natifs par des Zeos à condition qu'ils soient compatibles Mac. J'imagine la tête de mon collègue si je lui annonce que cela n'est plus disponible pour son OS préféré
- Utiliser pgSQL (le "freeze" n'est pas acceptable) mais le Front Office est en php... Cela va être pénible.
Si tel n'est pas le cas (économie de temps), je bascule vers mon autre plate-forme de développement... Ce sera plus long mais très enrichissant... et donc le temps dans ce cas est moins important. En réalité, je cherche à gagner du temps pour en accorder à l'autre plateforme.
Merci.
Cordialement. Gilles
Partager