Maison >base de données >tutoriel mysql >Comment réparer les erreurs « Délai d'attente de verrouillage dépassé » dans MySQL : débloquer une table bloquée

Comment réparer les erreurs « Délai d'attente de verrouillage dépassé » dans MySQL : débloquer une table bloquée

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-19 17:08:03182parcourir

How to Fix

Déverrouillage d'une table MySQL « bloquée » : dépannage du « délai d'attente de verrouillage dépassé »

Lorsque vous rencontrez le « délai d'attente de verrouillage dépassé ; essayez de redémarrer transaction" lorsque vous travaillez avec une table InnoDB dans MySQL, il est probable qu'une transaction soit restée bloquée. Voici comment réparer la table et résoudre la transaction bloquée :

1. Identifiez la transaction bloquée :

Exécutez la commande suivante dans l'interface de ligne de commande MySQL ou via phpMyAdmin :

SHOW PROCESSLIST;

Cela affichera une liste des threads en cours d'exécution. Recherchez les threads avec un temps d'exécution long ou ceux qui sont dans un état « Veille ». L'ID du fil de discussion correspondant sera affiché dans la colonne "Id".

2. Terminez le fil bloqué :

Une fois le fil bloqué identifié, terminez-le à l'aide de la commande suivante dans l'interface de ligne de commande :

KILL <thread_id>;

Remplacez avec l'ID du fil bloqué.

3. Redémarrez la transaction (facultatif) :

Si la transaction est toujours active, redémarrez-la pour libérer les verrous qu'elle pourrait détenir. Vous pouvez le faire en exécutant la commande suivante :

START TRANSACTION;
COMMIT;

4. Supprimez l'index (le cas échéant) :

Si vous avez déjà essayé de supprimer un index sur la table affectée et que cela a échoué en raison du verrou, essayez de le supprimer à nouveau après avoir terminé le thread bloqué et redémarré la transaction. .

ALTER TABLE <table_name> DROP INDEX <index_name>;

En suivant ces étapes, vous pouvez déverrouiller la table bloquée et résoudre l'erreur « Délai d'attente de verrouillage dépassé ». N'oubliez pas de vérifier régulièrement les threads en cours d'exécution pour identifier et mettre fin à toute transaction potentiellement bloquée afin d'éviter des problèmes similaires à l'avenir.

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn