У меня есть следующий запрос (все таблицы - innoDB)
INSERT INTO busy_machines(machine)
SELECT machine FROM all_machines
WHERE machine NOT IN (SELECT machine FROM busy_machines)
and machine_name!='Main'
LIMIT 1
Что вызывает тупик, когда я запускаю его в потоках, очевидно, из-за внутреннего выбора, правильно?
Ошибка, которую я получаю:
(1213, 'Deadlock found when trying to get lock; try restarting transaction')
Как я могу избежать тупика? Есть ли способ изменить запрос, чтобы заставить его работать, или мне нужно сделать что-то еще?
Ошибка не всегда, конечно, только после выполнения этого запроса много раз и в нескольких потоках.