Salta al contenuto

MySQL Error 1213: Deadlock found

Pubblicato il Aggiornato il

In breve: MySQL Error 1213 Deadlock: Errore 1213 indica un ciclo di attese tra transazioni. InnoDB annulla una transazione; l’applicazione deve poter ritentare e le query devono acquisire lock in ordine coerente.

MySQL Error 1213 Deadlock: che cosa significa

Errore 1213 indica un ciclo di attese tra transazioni.

Procedura dettagliata

L’ errore MySQL 1213 “Deadlock found when trying to get lock” indica un ciclo di attesa: due o più transazioni possiedono lock necessari alle altre e nessuna può proseguire. InnoDB rileva il deadlock, sceglie una transazione vittima e la annulla per liberare i lock.

I deadlock non significano necessariamente che il database sia danneggiato. In sistemi concorrenti possono verificarsi, ma l’applicazione deve ridurne la probabilità e saper ripetere in sicurezza l’intera transazione annullata.

Un caso tipico si verifica quando la transazione A aggiorna prima la riga 1 e poi la riga 2, mentre la transazione B aggiorna prima la riga 2 e poi la riga 1. Ciascuna attende un lock posseduto dall’altra.

La differenza rispetto all’errore 1205 è che nel 1213 esiste un ciclo; nel 1205 una richiesta ha semplicemente atteso oltre il limite.

La sezione LATEST DETECTED DEADLOCK riporta transazioni, query e lock coinvolti. Su un server amministrato è possibile abilitare temporaneamente la registrazione di tutti i deadlock:

Questa impostazione aumenta i messaggi nel log: usala per un periodo controllato e disattivala dopo la raccolta.

Guide Xlogic correlate

MySQL Error 1213: Deadlock found ultima modifica: 2026-08-03T01:01:39+02:00 da Team tecnico Xlogic

Ti è piaciuto questo Post?