J'essaie d'exécuter des DDL sur une table et SHOW PROCESSLIST
génère un message "En attente du verrouillage des métadonnées de la table".
Comment savoir quelle transaction n'est pas encore clôturée?
J'utilise MySQL v5.5.24.
J'essaie d'exécuter des DDL sur une table et SHOW PROCESSLIST
génère un message "En attente du verrouillage des métadonnées de la table".
Comment savoir quelle transaction n'est pas encore clôturée?
J'utilise MySQL v5.5.24.
SHOW ENGINE INNODB STATUS \G
Recherchez la Section -
TRANSACTIONS
Nous pouvons utiliser INFORMATION_SCHEMA Tables.
Requêtes Utiles -
De vérifier toutes les serrures les transactions sont en attente pour -
SELECT * FROM INNODB_LOCK_WAITS
Une liste de bloquer les transactions
SELECT *
FROM INNODB_LOCKS
WHERE LOCK_TRX_ID IN (SELECT BLOCKING_TRX_ID FROM INNODB_LOCK_WAITS)
OU
SELECT INNODB_LOCKS.*
FROM INNODB_LOCKS
JOIN INNODB_LOCK_WAITS
ON (INNODB_LOCKS.LOCK_TRX_ID = INNODB_LOCK_WAITS.BLOCKING_TRX_ID)
Une Liste de serrures sur perticular table:
SELECT * FROM INNODB_LOCKS
WHERE LOCK_TABLE = db_name.table_name
Une liste des opérations en attente pour les serrures:
SELECT TRX_ID, TRX_REQUESTED_LOCK_ID, TRX_MYSQL_THREAD_ID, TRX_QUERY
FROM INNODB_TRX
WHERE TRX_STATE = 'LOCK WAIT'
De référence - MySQL Dépannage: Que Faire Lorsque les Requêtes Ne fonctionnent pas, le Chapitre 6 - Page 96.
Si vous ne trouvez pas le processus de verrouillage de la table (cause, il est alreay morts), il peut être un fil toujours le nettoyage comme ceci
la section de la TRANSACTION de
show engine innodb status
à la fin
---TRANSACTION 1135701157, ACTIVE 6768 sec
MySQL thread id 5208136, OS thread handle 0x7f2982e91700, query id 882213399 xxxIPxxx 82.235.36.49 my_user cleaning up
comme mentionné dans un commentaire dans Claire de blocage de transaction?
vous pouvez essayer de tuer le thread de transaction directement, ici avec
KILL 5208136
a travaillé pour moi.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.