DBAtlas · Atlas d'exploitation des bases de données

1213: Deadlock found when trying to get lock; try restarting transaction (interblocage lors de l'acquisition du verrou ; relancez la transaction)

MySQL

Que signifie cette erreur ?

InnoDB a détecté un interblocage dans lequel deux transactions ou plus attendent mutuellement leurs verrous, et a rompu le cycle en annulant l'une des transactions.

Cause

Verrous de ligne acquis dans des ordres différents, mises à jour croisées des mêmes lignes, larges plages de lignes verrouillées (gap locks) faute d'index, ou conflits lors des vérifications de clés étrangères.

Comment la corriger

Affichez les détails du dernier interblocage : SHOW ENGINE INNODB STATUS (section LATEST DETECTED DEADLOCK). Accédez aux lignes/tables dans le même ordre dans toutes les transactions et gardez les transactions courtes. Réduisez la plage verrouillée en ajoutant des index appropriés. Interceptez la transaction annulée dans l'application et relancez-la (logique de relance).

Ouvrir dans DBAtlas →

Autres entrées pour ce moteur