Savoir quelle requete modifie une valeur

6 réponses
AuteurMessage

vincir |
Membre

 

Inscrit le : 26/10/2007

# Le 27/04/2012 à 20:10

Bonjour,

J'ai un problème avec mysql : j'ai un champ sur une base qui repasse à 0 sans que je n'arrive à trouver le script et la requete qui sont responsables de cela. Cela se produit de manière aléatoire. Existe-t-il un moyen de savoir quelle requête modifie une table ? J'ai regardé du coté des triggers, mais apparemment on ne peut pas faire cela. Existe-t-il une autre solution ? Parce que ça fait 3 fois que je relis tous les codes php, et je ne trouve rien qui pourrait expliquer ce phénomène.

Merci d'avance pour vos retours.

Vincent

http://www.vrdeveloppement.comOuvrir dans une nouvelle fenetre : réalisation de sites web et de logiciels personnalisés.

Bool | Olivier
Modérateur

Photo de Bool

Inscrit le : 09/05/2005

# Le 28/04/2012 à 11:37

Hello,

si les triggers ne répondent pas à ton besoin, je ne vois que les logs. Tu traces toutes les requêtes, et quand ça se produit tu fais une recherche à coup de grep dans les logs.

daevel : infogérance et conseilOuvrir dans une nouvelle fenetre || moiOuvrir dans une nouvelle fenetre

vincir | Vincent
Membre

 

Inscrit le : 26/10/2007

# Le 28/04/2012 à 11:42

Je ne connais pas bien les triggers, mais j'ai l'impression que je n'arriverais pas à récupérer la requete (au mieux je peux modifier un champ de la table en question si j'ai bien compris).
Pour le log, ça risque de ralentir le serveur non ? Il s'agit d'un site en production, avec un nombre relativement important de visites par jours, donc ça represente plusieurs millions de requetes par jour.

http://www.vrdeveloppement.comOuvrir dans une nouvelle fenetre : réalisation de sites web et de logiciels personnalisés.

devtribu | Olivier
Modérateur

Photo de devtribu

Inscrit le : 16/06/2005

# Le 28/04/2012 à 12:00

Interessant comme besoin

Logger les requetes dans une table en insert delayed ne consommera pratiquement rien
ensuite tu utilises le trigger pour reperer l'heure exacte du changement et tu trouves nettement plus facilement la requete dans ta table de logs

Autre solution, avant d'envoyer chaque requete sql au serveur, tu l'analyses avec strpos pour reperer le "colonnetruc" et tu ne log que celles qui correspondent

Février 2019, mon futur livre Tout JavaScript chez Dunod https://amzn.to/2PoLd0fOuvrir dans une nouvelle fenetre

devtribu | Olivier
Modérateur

Photo de devtribu

Inscrit le : 16/06/2005

# Le 28/04/2012 à 12:06

PS : ce comportement ressemble quand meme a une différence de source entre le serveur et le code local
Tu as bien le bon source ? Tu as fait la recherche dans tous les fichiers source avec un éditeur de texte ?

Autre piste : la requete ne fait pas un colonnetruc=0 mais une opération qui revient a ca type : colonnetruc=colonnetruc*0

Enfin : la requete est construite avec des parametres utilisateurs en get ou post et ils n'apparaissent donc pas dans le code source (ce qui est tres dangereux)

Février 2019, mon futur livre Tout JavaScript chez Dunod https://amzn.to/2PoLd0fOuvrir dans une nouvelle fenetre

tonguide | Jeremy
Modérateur

 

Inscrit le : 09/05/2005

# Le 29/04/2012 à 01:18

Une idée comme ça ...

REPLACE qui serait fait sur tous les champs, sauf celui en question.

vincir | Vincent
Membre

 

Inscrit le : 26/10/2007

# Le 29/04/2012 à 16:20

J'ai bien le code source, par contre je n'ai pas toutes les sources, le client a ses propres développeurs pour certaines parties du site. C'est pour cela que je cherchais un moyen de connaitre la requête responsable pour savoir si ça venait de mes scripts ou non.
Et j'ai fait mes recherches sur le nom de la table et non pas uniquement du champ=0, et je n'ai rien vu qui pourrait expliquer une remise à 0.
Merci pour vos conseils, je continue à chercher :-)

http://www.vrdeveloppement.comOuvrir dans une nouvelle fenetre : réalisation de sites web et de logiciels personnalisés.

Répondre

Vous ne pouvez pas participer au forum, car votre inscription n'a pas été validée. Pour vous faire valider en tant que Membre, cliquez ici.

© MHN - Tous droits réservés | CNIL N°844440 | 23/11/2024 17:53:48 | Généré en 4.91ms | Contacts | Mentions légales |