1213: Deadlock found when trying to get lock; try restarting transaction
MySQLO que significa?
O InnoDB detectou um deadlock em que duas ou mais transações aguardam os locks umas das outras e quebrou o ciclo fazendo rollback de uma das transações.
Por que acontece?
Locks de linha adquiridos em ordens diferentes, atualizações cruzadas das mesmas linhas, faixas amplas de linhas sendo bloqueadas (gap locks) por falta de índices, ou conflitos durante verificações de foreign key.
Como resolver
Veja os detalhes do último deadlock: SHOW ENGINE INNODB STATUS (seção LATEST DETECTED DEADLOCK). Acesse linhas/tabelas na mesma ordem em todas as transações e mantenha as transações curtas. Reduza a faixa bloqueada adicionando índices adequados. Capture a transação que sofreu rollback na aplicação e tente novamente (lógica de retry).