Bonjour,

Encore un truc que je n'arrive pas à comprendre ...
L'application que j'ai migré (quasi redéveloppée) de paradox 5.0 à mariadb 10 depuis une delphi v3 vers une delphi 10.4 fonctionne très bien mais ... car il y a un mais ...
J'ai cherché sur le forum et sur le net en général et je n'ai pas vu ce problème évoqué.

En version 64bits, l'application fonctionne très bien. Dès que je valide une modification dans un enregistrement, elle se répercute immédiatement sur la base dès que je la rafraichis dans heidisql.
J'ai paramétré les bases pour que si un utilisateur rentre en édition dans un enregistrement, les autres postes qui cherchent à éditer le même enregistrement recoivent un message comme quoi il est verrouillé, et à mon grand étonnement ça a marché du premier coup. Bon, tout allait bien ...

Bien évidemment, selon la loi de l'emmerdement maximum, sur un des postes, bien qu'il soit en w10 64bits, la version 64 bits ne fonctionne pas avec un message d'erreur sur la dll qui n'est pas la bonne.
Pourtant j'utilise la même libmysql.dll que sur les deux autres postes, spécifique au 64 bits (je précise qu'il faut que j'utilise une libmysqll.dll du 17/07/2017, car les versions ultérieures que j'ai pu trouvé en 64bits provoquent également un message d'erreur, y compris la libmariadb.dll du 03/11/2021).
Qu'à cela ne tienne me dis-je, je vais installer la version 32 bits avec la dll 32bits.
Résultat, l'application se lance bien, plus de messages d'erreurs, je rentre en consultation sur toutes les tables sans problèmes.
Et puis par commodité car j'étais sur ce poste, je fais une modification sur un enregistrement pour vérifier le bon verrouillage de celui-ci.
Je rafraichis dans heidisql, la modification n'apparaît pas ... je rafraichis la table dans mon appli ... re heidisql ... rien ...
La modification semble bien appliquée dans la table, y compris avec un refresrecord, mais lorsque je ferme l'application et que je la réouvre, la modification précédente n'a pas été prise en compte, ce que semblait corroborer l'examen sous heidisql.
Après plusieurs tests et essais, je me suis rendu compte que la base était toujours à jour de l'avant dernière modification. Je m'explique ...
Le champ contient 1.
Je mets 2 dans le champ, je valide, rien ne se passe dans la base alors que dans l'application tout semble être bon, même après un refreshrecord.
Je mets 3 dans le champ, je valide, la base est mise à jour avec la valeur 2 ! alors que dans l'application, la valeur 3 apparaît même après un refreshrecord.
Je précise bien que ce comportement ne se passe qu'avec une version compilée en 32 bits alors que le même code compilé en 64 bits fonctionne très bien. ...

J'ai bien pensé à une histoire de cache ou un truc comme ça, mais malgré toutes les options que j'ai pu essayé sur la table en question (ou toute autre table après vérification) au niveau de UpdatesOption, rien n'y fait.
J'avoue que je ne vois plus comment résoudre ce problème malgré plusieurs journées de recherche ...

Quelqu'un a t il été confronté à un problème du genre ?

Merci par avance pour votre aide ...