Existe-t-il un moyen d'afficher les requêtes mysql passées avec phpmyadmin?

113

J'essaye de localiser un bug qui supprime des lignes dans une mysqltable.

Pour la vie de moi, je ne peux pas le retrouver dans mon PHPcode, donc j'aimerais travailler à rebours en trouvant la requête mysql qui supprime les lignes.

Je me suis connecté à phpmyadmin, mais je ne trouve pas de moyen d'afficher l'historique des opérations SQL passées.

Existe-t-il un moyen de les afficher dans phpmyadmin?

chris1979
la source
2
Ne pouvez-vous pas rechercher dans votre code des DELETEinstructions et déboguer de cette façon?
webbiedave
Écoutez Baol et Webbiedave. Vous devez activer la journalisation des requêtes pour voir ce qui se passe, mais vous devez toujours trouver d'où proviennent les instructions SQL dans votre code. Démarrer grep pour « supprimer », il ne peut être que de nombreuses déclarations de suppression de votre projet.
joeynelson le
oui, j'ai en fait commencé par demander la suppression, mais mes yeux doivent être passés sous silence car aucune des suppressions ne semble problématique ... c'est pourquoi j'espère que le journal des requêtes aidera. merci à vous deux pour votre aide.
chris1979
Recherchez tous les déclencheurs dans votre base de données qui pourraient également effectuer les suppressions
Mark Baker

Réponses:

107

Ok, donc je suis tombé sur la réponse.

phpMyAdmin offre un bref historique. Si vous cliquez sur l'icône 'sql' juste en dessous du logo 'phpMyAdmin', une nouvelle fenêtre s'ouvrira. Dans la nouvelle fenêtre, cliquez simplement sur l'onglet «historique».

Cela vous donnera les vingt dernières opérations SQL.

entrez la description de l'image ici

chris1979
la source
2
Vous pouvez configurer phpMyadmin pour économiser davantage. J'ai la configuration mienne pour enregistrer les 100000 dernières requêtes.
Mixologic
MAIS ... chaque fois que vous mettez à jour (par exemple: chargez une version précédente) votre base de données, vous perdez votre historique (vous ne pouvez donc pas réinstaller une base de données pour vérifier son historique)
JinSnow
1
N'enregistre pas les changements d'index, et ce serait exactement utile pour cette chose, car il ne les enregistre pas correctement lorsque vous les exécutez non plus…
o0 '.
57
Je ne vois pas cette icône SQL, où est-elle dans la version actuelle?
Joseph Astrahan
3
@JosephAstrahan cliquez sur l' Query windowicône à côté deHome
amallard
64

Il y a un onglet Console au bas de l' écran SQL (requête). Par défaut, il n'est pas développé, mais une fois cliqué dessus, il devrait exposer des onglets pour Options, Historique et Effacer. Cliquez sur l'historique.

La longueur de l'historique des requêtes est définie à partir des paramètres liés à la page qui se trouvent en cliquant sur la roue dentée en haut à droite de l'écran.

Ceci est correct pour la version 4.5.1-1 de PHP

ruelle
la source
6
La longueur est maintenant sous Accueil | Paramètres | Requêtes SQL | Durée de l'historique des requêtes . Et exaspérante "La valeur doit être égale ou inférieure à 25!"
Bob Stein
39

Il vous suffit de cliquer sur la console en bas de l'écran dans phpMyAdmin et vous obtiendrez l'historique exécuté:

entrez la description de l'image ici

Samarth Saxena
la source
Je n'ai pas pu trouver la page dans la réponse acceptée (peut-être qu'elle provient d'une version différente), et cela a fonctionné pour moi, merci.
felwithe
4
Cela n'affiche que les requêtes exécutées par l'utilisateur à partir de phpmyadminlui-même. Il ne montre pas les enregistrements complets de toutes les requêtes effectuées.
Fusion
12

Pour afficher les requêtes précédentes, exécutez simplement cette requête dans phpMyAdmin.

SELECT * FROM `general_log`

s'il n'est pas activé, exécutez les deux requêtes suivantes avant de l'exécuter.

SET GLOBAL log_output = 'TABLE';
SET GLOBAL general_log = 'ON';
Waqas Bukhary
la source
7
merci très utile. à n'importe qui d'autre SELECT * FROM general_logdoit être interrogé dans la table mysql sinon vous devez inclure le nom de la table: SELECT * FROM mysql. general_log
siggi_pop
9

Je ne pense pas que phpMyAdmin vous permet de faire cela, mais j'aimerais entendre que je me trompe.

D'autre part, vous pouvez activer la journalisation des requêtes dans MySQL: Le journal des requêtes générales

baol
la source
8

Oui, vous pouvez enregistrer les requêtes dans une table DB phpMyAdmin spéciale.

Voir SQL_history .

bleui
la source
Cela complète la réponse donnée ci-dessus par @Dhinakar.
Meetai.com
7

J'utilise la version du serveur phpMyAdmin: 5.1.41.

Il offre la possibilité de visualiser l'historique SQL à travers la phpmyadmin.pma_historytable.

Vous pouvez rechercher votre requête dans ce tableau.

pma_history le tableau a la structure ci-dessous:

entrez la description de l'image ici

Dhinakar
la source
3

Vous devez cliquer sur la fenêtre de requête juste en dessous du logo phpMyAdmin, une nouvelle fenêtre s'ouvrira. Cliquez simplement sur l'onglet Historique SQL. Là, vous pouvez voir l'historique des requêtes SQL.

Anurag Prashant
la source
2

Je me trompe peut-être, mais je crois avoir vu une liste des requêtes SQL précédentes dans le fichier de session pour les sessions phpmyadmin

Mark Baker
la source
Toutes mes excuses ... J'ai mal lu votre question: la liste en session est la liste des déclarations précédentes émises via phpmyadmin, donc elle ne contient aucune instruction SQL émise par vos propres scripts PHP, donc probablement pas si utile.
Mark Baker
1

OK, je sais que je suis un peu en retard et que certaines des réponses ci-dessus sont excellentes.

Comme petit plus, dans n'importe quelle page PHPMyAdmin:

  1. Cliquez sur l'onglet SQL
  2. Cliquez sur "Obtenir la requête enregistrée automatiquement"

cela affichera alors votre dernière requête saisie.

Jackherer
la source
0

vous pouvez exécuter votre ancien mysql avec run /PATH_PAST_MYSQL/bin/mysqld.exe

il exécute votre dernier mysql et vous pouvez le voir dans phpmyadmin et dans une autre section de votre système.

remarque: arrêtez votre version actuelle de mysql.

SF Mon anglais.

Omid Ahmadyani
la source
0

pourquoi n'utilisez-vous pas l'exportation, puis cliquez sur le bouton radio «Personnalisé - afficher toutes les options possibles», puis choisissez votre base de données, puis allez dans Sortie et choisissez «Afficher la sortie sous forme de texte», faites défiler vers le bas et Allez. Voila!

Afficher un nom
la source