Вашата ALTER TABLE table ADD CONSTRAINT foreign_key FOREIGN KEY
са едни и същи, така че не могат да бъдат причината за грешката.
(...текстът е премахнат)
Не мога да обясня това странно поведение. Може да предложи решение:
SET FOREIGN_KEY_CHECKS = 0;
DELETE FROM A WHERE ID=1;
SET FOREIGN_KEY_CHECKS = 1;