まず、idが主キーまたは少なくともインデックス付きの列であると想定します。
挿入によってテーブルがロックされないようにする必要があるため、レコードの削除と同時に他の更新/削除クエリが実行されている可能性があります。
そうでない場合は、@a_horse_with_no_nameに記載されている「ギャップロック」が原因である可能性があります。
したがって、この問題が再び発生したときに、すべてのプロセスを「show full processlist」の最後に保存し、「show engine innodb status」をチェックして、デッドロックに関連するプロセスIDを表示する必要があります。これは正確な取得に役立ちます問題。
さらに、このロックを回避して、主キーに基づいてすべての行を1つずつ削除できます。