I encountered this problem too, after "simplifying" my naming conventions on an experimental database. Problem occurred many times on many different tables.
Luckily, I found
http://forums.mysql.com/read.php?22,33999,249437#msg-249437.
The simplified naming turned out to be the problem. Specifically, two foreign key constraints in two different tables wound up with the same name. Trying to create the second occurence fails.
I actually DID want them to be the same name. It's just a reference check. So, it would be convenient that all checks against table T001 from all other tables would be named something like fk_T001.
But that don't work.
When I renamed the foreign keys to be unique within this database, everything ran fine.
So, I guess the rule is that every foreign key constraint has to be a unique name?
Jim Maher