2

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

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

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

4

2 回答 2

2

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

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

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

于 2010-10-12T14:02:51.130 回答
2

这是一个外键引用错误...

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

显示引擎 INNODB 状态

于 2011-03-14T11:28:40.917 回答