Je suis confronté à un phénomène étrange... mais peut-être très logique (en tout cas pas pour moi !
Voilà, je ch à gérer des images classées dans une base. Si une image correspond à certains critères, elle est sélectionnée pour être affichée. Je lui alloue alors un crédit supplémentaire. Problème : parfois lors des sélections successives de cette image par le script PHP, elle a été créditée plusieurs fois alors que le update n'a été appliqué qu'une fois ! C'est comme si MySQL effectuait le UPDATE 2 ou 3 fois de suite :
1)
SELECT *
FROM images
WHERE ...
AND ...
AND credit > 0
ORDER BY rand()
LIMIT 1
S'il existe un résultat en 1) on passe en 2) :
2)
UPDATE images SET credit = credit+1 WHERE num = $num;
Résultat : plusieurs appels successifs du script donnent non pas : credit=1, 2, 3, 4, 5... mais : credit=1, 2, 4, 5, 7, 10...
On dirait que credit est incrementé même quand la partie 2) du script n'est pas exécutée et que le simple fait de faire le SELECT en 1) même s'il ne renvoit pas une image (ce qui est prévu) agit sur le dernier 'credit' modifié.
Une histoire de LOW/HIGH_PRIORITY ?