Twoja ALTER TABLE table ADD CONSTRAINT foreign_key FOREIGN KEY
są takie same, więc nie mogą być przyczyną błędu.
(...tekst jest usuwany)
Nie potrafię wyjaśnić tego dziwnego zachowania. Może zaproponować obejście:
SET FOREIGN_KEY_CHECKS = 0;
DELETE FROM A WHERE ID=1;
SET FOREIGN_KEY_CHECKS = 1;