Votre table ALTER TABLE table ADD CONSTRAINT foreign_key FOREIGN KEY
sont les mêmes, ils ne peuvent donc pas être la cause de l'erreur.
(...le texte est supprimé)
Je ne peux pas expliquer ce comportement étrange. Peut suggérer une solution :
SET FOREIGN_KEY_CHECKS = 0;
DELETE FROM A WHERE ID=1;
SET FOREIGN_KEY_CHECKS = 1;