Salta al contenuto

MySQL Error 1213: Deadlock found

Pubblicato il Aggiornato il

Un deadlock si verifica quando più transazioni si bloccano a vicenda. InnoDB annulla una delle transazioni coinvolte: l’applicazione deve gestire il tentativo successivo.

MySQL Error 1213 Deadlock: che cosa significa

Errore 1213 indica un ciclo di attese tra transazioni.

Procedura dettagliata

Un caso tipico: due transazioni aggiornano le stesse righe in ordine opposto. Un deadlock non indica di per sé che le tabelle siano danneggiate.

  • Raccogli il messaggio e l’orario. Chiedi al gestore di esaminare LATEST DETECTED DEADLOCK nell’output di SHOW ENGINE INNODB STATUS.
  • Se serve una raccolta più ampia, il gestore può valutare innodb_print_all_deadlocks per un intervallo limitato, conservando e poi ripristinando il valore precedente.
  • Fai accedere alle righe e alle tabelle nello stesso ordine nelle operazioni concorrenti. Mantieni brevi le transazioni e verifica gli indici delle query interessate.
  • Quando ricevi l’errore 1213, prepara un numero limitato di tentativi dell’intera transazione, con una breve attesa tra i tentativi. Non ripetere soltanto l’ultima query.
  • Proteggi dagli invii duplicati le azioni esterne, come email o pagamenti: il rollback del database non annulla ciò che è già avvenuto fuori dal database.
  • Verifica il comportamento sotto concorrenza in un ambiente di test, compreso il caso in cui tutti i tentativi falliscano.

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?