La "brecha" está bloqueada en previsión de que alguien intente insertar la fila que estoy tratando de eliminar.
O, para verlo de otra manera... Sería demasiado lento manejar perfectamente cada caso extraño. Por lo tanto, InnoDB elige manejar la mayoría de los casos de manera eficiente y descartar el raro caso extraño.
En pocas palabras:vive con eso. Usted lo hará obtener interbloqueos. No necesariamente serás capaz de entenderlos. Pero su código necesita recuperarse, simplemente retrocediendo y volviendo a BEGIN
.