Нишка 2 държи споделено заключване на реда в таблицата с потребители.
След това нишка 1 се опитва да получи изключително заключване на същия ред и преминава в изчакване на заключване.
Но нишка 1 няма да има възможност да изтече, защото нишка 2 след това се опитва да ескалира заключването си до изключителна... но за да направи това, той трябва да изчака нишка 1, която е в изчакване на заключване, но чака нишка 2.
Всеки от тях блокира другия.
Това е задънена улица.
Сървърът избира транзакция, която да убие, така че да не се блокират ненужно.
Откриването на застой позволява на една нишка незабавно да успее за сметка на другата. В противен случай и двамата щяха да останат затворени в изчакване, докато единият от тях умре от твърде дълго чакане.
Вие сте в режим на автоматично извършване, но разбира се, това не означава, че не сте в транзакция. Всяка заявка с InnoDB все още се обработва в транзакция, но при autocommit транзакцията се стартира имплицитно, когато заявката започне да се изпълнява, и неявно се ангажира, когато успее.