我无法删除已编入索引的列。我真的不明白发生了什么,因为我通常没有删除索引的问题。 当我尝试删除列或索引时,我收到以下错误
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
感谢您的帮助,如果您需要更多信息,请告诉我们。
答案 0 :(得分:2)
您在该索引上有外键关系,因此InnoDB会阻止删除该列以保持一致性。首先删除引用该列的所有外键。
这是因为ALTER TABLE确实可以通过制作表的副本,然后重命名以将旧表移开并将新表移动到其位置来实现。它肯定是我在MySQL中看到的不太有意义的错误消息之一。
http://www.xaprb.com/blog/2006/08/22/mysqls-error-1025-explained/
答案 1 :(得分:2)
这是外键引用错误...
您可以使用以下语句查看表格
SHOW ENGINE INNODB状态