DBAtlas · Atlas de operaciones de bases de datos

1213: Deadlock found when trying to get lock; try restarting transaction (deadlock al obtener el bloqueo; reinicie la transacción)

MySQL

¿Qué significa?

InnoDB detectó un deadlock en el que dos o más transacciones esperan los bloqueos de la otra y rompió el ciclo revirtiendo una de las transacciones.

¿Por qué ocurre?

Bloqueos de fila adquiridos en distinto orden, actualizaciones cruzadas de las mismas filas, rangos amplios de filas bloqueados (gap locks) por falta de índices o conflictos durante las comprobaciones de claves foráneas.

Cómo solucionarlo

Vea los detalles del último deadlock: SHOW ENGINE INNODB STATUS (sección LATEST DETECTED DEADLOCK). Acceda a filas/tablas en el mismo orden en todas las transacciones y mantenga las transacciones cortas. Reduzca el rango bloqueado añadiendo índices adecuados. Capture la transacción revertida en la aplicación y reinténtela (lógica de reintento).

Abrir en DBAtlas →

Más entradas de este motor