检查一下你的外健名有没有写错曾经这是MySQL的一个bug,但是现在只是MySQL的一个不友好的地方。 例子如下: ALTER TABLE ruler.test2child DROP FOREIGN KEY test; ERROR 1025 : Error on rename of './ruler/test2child' to './ruler/#sql2-298-8f' (errno: 152) 这里并不是不能删除外键,而是使用了错误的外键名称,但是MySQL报的错实在离谱。 正确的错误信息要如下查询才能知道:show innodb status; ------------------------ LATEST FOREIGN KEY ERROR ------------------------ 071222 20:48:26 Error in dropping of a foreign key constraint of table "ruler"."test2child", in SQL command ALTER TABLE ruler.test2child DROP FOREIGN KEY test Cannot find a constraint with the given id "test".