无法删除索引列,ERROR 1025(HY000):将..重命名为...时出错(错误号:150)

时间:2010-10-12 14:00:05

标签: mysql mysql-error-1025

我无法删除已编入索引的列。我真的不明白发生了什么,因为我通常没有删除索引的问题。 当我尝试删除列或索引时,我收到以下错误

ERROR 1025 (HY000): Error on rename of './db-name/#sql-135e_9ee6d2' to './db-name/table-name' (errno: 150)

如果我在同一列上创建一个新索引,我可以删除旧索引但不删除新索引(我猜它只是检查索引是否可用)。 你有没有遇到这个问题,如果有任何建议我怎么解决这个问题?

引擎:innoDB mysql版本:Ver 14.12 Distrib 5.0.45,redhat-linux-gnu(x86_64)使用readline 5.0

感谢您的帮助,如果您需要更多信息,请告诉我们。

2 个答案:

答案 0 :(得分:2)

您在该索引上有外键关系,因此InnoDB会阻止删除该列以保持一致性。首先删除引用该列的所有外键。

  

这是因为ALTER TABLE确实可以通过制作表的副本,然后重命名以将旧表移开并将新表移动到其位置来实现。它肯定是我在MySQL中看到的不太有意义的错误消息之一。

     

http://www.xaprb.com/blog/2006/08/22/mysqls-error-1025-explained/

答案 1 :(得分:2)

这是外键引用错误...

您可以使用以下语句查看表格

SHOW ENGINE INNODB状态