Tråd 2 har en delt lås på rækken i brugertabellen.
Derefter forsøger tråd 1 at få en eksklusiv lås på samme række og går i låsevent.
Men tråd 1 vil ikke have mulighed for at time-out, fordi tråd 2 så forsøger at eskalere sin lås til eksklusiv... men for at gøre det skal han vente på tråd 1, som er i lås venter, men den venter på tråd 2.
De blokerer hver for hinanden.
Det er et dødvande.
Serveren vælger en transaktion at dræbe, så de ikke blokerer hinanden unødigt.
Deadlock-detektion gør det muligt for den ene tråd straks at lykkes på bekostning af den anden. Ellers ville de begge sidde fast i lås, indtil en af dem døde af at vente for længe.
Du er i autocommit-tilstand, men det betyder selvfølgelig ikke, at du ikke er i en transaktion. Hver forespørgsel med InnoDB håndteres stadig i en transaktion, men med autocommit startes transaktionen implicit, når forespørgslen begynder at udføre, og implicit begået, når den lykkes.