Vaše ALTER TABLE table ADD CONSTRAINT foreign_key FOREIGN KEY
jsou stejné, takže nemohou být důvodem chyby.
(...text je odstraněn)
Nedokážu vysvětlit to podivné chování. Může navrhnout řešení:
SET FOREIGN_KEY_CHECKS = 0;
DELETE FROM A WHERE ID=1;
SET FOREIGN_KEY_CHECKS = 1;