Prima di tutto supponendo che id sia una chiave primaria o almeno una colonna indicizzata.
Inserisci non dovrebbe bloccare la tabella, quindi è probabile che qualsiasi altra query di aggiornamento/eliminazione venga eseguita contemporaneamente all'eliminazione dei record.
In caso contrario, potrebbe essere dovuto al "blocco del gap" come menzionato @a_horse_with_no_name.
Quindi, nel momento in cui si verifica di nuovo questo problema, è necessario archiviare tutti i processi "mostra l'elenco completo dei processi" alla fine e controllare anche "mostra lo stato innodb del motore" dove ti mostrerà i processi relativi al deadlock, questo ti aiuterà a ottenere l'esatto problema.
Inoltre, puoi evitare questo blocco per eliminare tutte le righe una per una in base alla chiave primaria.