La tua ALTER TABLE table ADD CONSTRAINT foreign_key FOREIGN KEY
sono gli stessi, quindi non possono essere la causa dell'errore.
(...il testo viene rimosso)
Non riesco a spiegare quello strano comportamento. Può suggerire una soluzione alternativa:
SET FOREIGN_KEY_CHECKS = 0;
DELETE FROM A WHERE ID=1;
SET FOREIGN_KEY_CHECKS = 1;