Sua
ALTER TABLE table ADD CONSTRAINT foreign_key FOREIGN KEY
são os mesmos, então eles não podem ser o motivo do erro. (... o texto foi removido)
Não é possível explicar esse comportamento estranho. Pode sugerir uma solução alternativa:
SET FOREIGN_KEY_CHECKS = 0;
DELETE FROM A WHERE ID=1;
SET FOREIGN_KEY_CHECKS = 1;