Localisation de la transaction provoquant l'état « En attente du verrouillage des métadonnées de la table »
Dans MySQL, rencontre d'un message « En attente du verrouillage des métadonnées de la table » pendant Les opérations DDL indiquent un verrou détenu par une autre transaction. Pour déterminer la transaction coupable, envisagez les méthodes suivantes :
MySQL Version < 5.7.3
-
SHOW ENGINE INNODB STATUS G : Cette commande affiche la section "TRANSACTIONS", répertoriant les transactions ouvertes.
Tableaux INFORMATION_SCHEMA
-
SELECT * FROM INNODB_LOCK_WAITS : Récupère des informations sur toutes les attentes de verrouillage.
-
SELECT * FROM INNODB_LOCKS WHERE LOCK_TRX_ID IN (SELECT BLOCKING_TRX_ID FROM INNODB_LOCK_WAITS) : Identifie les transactions bloquantes.
-
SELECT * FROM INNODB_LOCKS INNER JOIN INNODB_LOCK_WAITS ON (INNODB_LOCKS.LOCK_TRX_ID = INNODB_LOCK_WAITS.BLOCKING_TRX_ID) : Répertorie les mêmes informations que le requête précédente.
-
SELECT * FROM INNODB_LOCKS WHERE LOCK_TABLE = db_name.table_name: Localise les verrous sur une table spécifique.
-
SELECT TRX_ID, TRX_REQUESTED_LOCK_ID, TRX_MYSQL_THREAD_ID, TRX_QUERY FROM INNODB_TRX WHERE TRX_STATE = 'LOCK WAIT' : Répertorie les transactions en attente de verrous.
Référence :
- Dépannage MySQL : que faire Faire lorsque les requêtes ne fonctionnent pas, Chapitre 6 - Page 96
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!