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).
Más entradas de este motor
- 1045Access denied for user (using password: YES/NO) (acceso denegado para el usuario)
- 1062Duplicate entry for key (entrada duplicada para la clave)
- 1205Lock wait timeout exceeded; try restarting transaction (se superó el tiempo de espera de bloqueo; reinicie la transacción)
- 1040Too many connections (demasiadas conexiones)
- 1064You have an error in your SQL syntax (error de sintaxis SQL)
- 1146Table doesn't exist (la tabla no existe)