Tu ALTER TABLE table ADD CONSTRAINT foreign_key FOREIGN KEY
son iguales, por lo que no pueden ser la razón del error.
(... se elimina el texto)
No puedo explicar ese extraño comportamiento. Puede sugerir una solución alternativa:
SET FOREIGN_KEY_CHECKS = 0;
DELETE FROM A WHERE ID=1;
SET FOREIGN_KEY_CHECKS = 1;