Ihr ALTER TABLE table ADD CONSTRAINT foreign_key FOREIGN KEY
sind gleich, können also nicht der Grund für den Fehler sein.
(...Text wurde entfernt)
Kann mir dieses seltsame Verhalten nicht erklären. Kann eine Problemumgehung vorschlagen:
SET FOREIGN_KEY_CHECKS = 0;
DELETE FROM A WHERE ID=1;
SET FOREIGN_KEY_CHECKS = 1;