Résolution des erreurs « Délai d'attente de verrouillage dépassé » dans MySQL
L'erreur « Délai d'attente de verrouillage dépassé ; essayez de redémarrer la transaction » dans MySQL, même sans utiliser explicitement les transactions, est un problème courant avec plusieurs causes potentielles.
Un coupable fréquent est un verrou de table détenu par un autre processus. Pour identifier les tables verrouillées, utilisez cette commande :
<code class="language-sql">SHOW OPEN TABLES WHERE In_use > 0;</code>
Cette requête révèle les tables actuellement verrouillées. Si votre table cible apparaît, l'étape suivante consiste à trouver le processus responsable en utilisant :
<code class="language-sql">SHOW PROCESSLIST;</code>
Cela affiche les processus actifs. Localisez l'ID de processus (PID) verrouillant votre table et terminez-le avec :
<code class="language-sql">KILL <process_id>;</code>
Un autre scénario implique des transactions implicites. Vérifiez-les en utilisant :
<code class="language-sql">SELECT @@INNODB_TRX_ID;</code>
Un résultat non nul indique une transaction implicite active. Forcer un commit avec :
<code class="language-sql">COMMIT;</code>
En cas d'échec de ces étapes, le redémarrage du serveur MySQL ou l'optimisation de la table peuvent être des solutions nécessaires. L'optimisation des tables peut être réalisée à l'aide de diverses commandes en fonction de votre version et de vos besoins spécifiques de MySQL.
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!