Tråd 2 har ett delat lås på raden i användartabellen.
Sedan försöker tråd 1 få ett exklusivt lås på samma rad och går in i lås väntan.
Men tråd 1 kommer inte ha en möjlighet att ta timeout, eftersom tråd 2 då försöker eskalera sitt lås till exklusivt... men för att göra det måste han vänta på tråd 1, som är i lås väntan, men den väntar på tråd 2.
De blockerar varandra.
Det är ett dödläge.
Servern väljer en transaktion att döda, så att de inte blockerar varandra i onödan.
Deadlock-detektering tillåter en tråd att omedelbart lyckas på bekostnad av den andra. Annars skulle de båda sitta fast i lås väntan tills en av dem dog av att ha väntat för länge.
Du är i autocommit-läge, men det betyder naturligtvis inte att du inte är i en transaktion. Varje fråga med InnoDB hanteras fortfarande i en transaktion, men med autocommit startas transaktionen implicit när frågan börjar köras och implicit begås när den lyckas.