2010-09-03 3 views
191

Lorsque j'émets une requête SHOW PROCESSLIST, seuls les 100 premiers caractères de la requête SQL en cours d'exécution sont renvoyés dans la colonne info.Comment afficher la requête complète de SHOW PROCESSLIST

Est-il possible de changer config Mysql ou d'émettre une sorte de demande différente pour voir requête complète (les requêtes que je suis à la recherche sont plus de 100 caractères)

Répondre

334
SHOW FULL PROCESSLIST 

Si vous n'utilisez pas FULL , "only the first 100 characters of each statement are shown in the Info field". Lorsque vous utilisez phpMyAdmin, vous devez également cliquer sur l'option "Full texts" ("← T →" dans le coin supérieur gauche d'un tableau de résultats) pour voir des résultats non tronqués.

+2

Il semble phpmyadmin ne se soucie pas de cela, et montre encore l'information tronquée. – giorgio79

+0

@ giorgio79: Si je me souviens bien, phpMyAdmin tronque tous les résultats de chaîne. Cela fait quatre ans que j'ai fait du développement web, donc je pourrais très bien me tromper. –

+5

+1 pour la note phpMyAdmin. – Cyntech

8

Je viens de lire dans le MySQL documentation que SHOW FULL PROCESSLIST par défaut ne liste que les fils de votre connexion utilisateur actuel.

Citation de la documentation MONTRER MySQL COMPLET PROCESSLIST:

Si vous avez le privilège de processus, vous pouvez voir toutes les discussions.

vous pouvez donc activer la colonne Process_priv dans votre table mysql.user. Rappelez-vous d'exécuter FLUSH PRIVILEGES après :)

-26

cette solution a fonctionné pour moi:

  • Ouvrir un terminal et connectez-vous au serveur mysql
  • nouveau terminal ouvert et redémarrez le service mysqld (ne fermez pas la première borne)
  • sur la première course terminale « arrêt esclave »
  • sur la première course de terminal « esclave start »
  • vous verrez maître/esclave va commencer à travailler très bien avec aucune erreur
+5

Il ne s'agit pas de déploiements SQL multi-nœuds. – sjas

32

Afficher la liste de processus récupère les informations d'une autre table. Voici comment vous pouvez extraire les données et regarder la colonne « INFO », qui contient toute la requête:

select * from INFORMATION_SCHEMA.PROCESSLIST where db = 'somedb'; 

Vous pouvez ajouter une condition ou d'ignorer en fonction de vos besoins.

La sortie de la requête est ensuivie comme:

+-------+------+-----------------+--------+---------+------+-----------+----------------------------------------------------------+ 
| ID | USER | HOST   | DB  | COMMAND | TIME | STATE  | INFO              | 
+-------+------+-----------------+--------+---------+------+-----------+----------------------------------------------------------+ 
|  5 | ssss | localhost:41060 | somedb | Sleep | 3 |   | NULL              | 
| 58169 | root | localhost  | somedb | Query | 0 | executing | select * from sometable where tblColumnName = 'someName' | 
+4

C'est probablement la réponse la plus utile. – dr01

+0

Ma colonne d'informations affiche 'COMMIT'. Savez-vous comment je peux voir plus de détails sur la requête réelle? –

Questions connexes