【问题标题】:Can't remove indexed column, ERROR 1025 (HY000): Error on rename of .. to .. (errno: 150)无法删除索引列,错误 1025 (HY000): 将 .. 重命名为 .. 时出错 (errno: 150)
【发布时间】:2011-04-24 08:24:13
【问题描述】:

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

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

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

【问题讨论】:

    标签: mysql mysql-error-1025


    【解决方案1】:

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

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

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

    【讨论】:

    • 你完全正确。我以为我已经这样做了,但是由于我的疏忽或 phpMyAdmin 的配合,它仍然存在。谢谢。
    • 只是添加到@Tatu 答案。先运行这个命令ALTER TABLE table_name DROP FOREIGN KEY foreign_key_name;再运行命令ALTER TABLE table_name DROP PRIMARY KEY
    【解决方案2】:

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

    你可以用下面的语句来查看表格

    显示 ENGINE INNODB 状态

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-27
      • 2011-05-01
      • 1970-01-01
      • 1970-01-01
      • 2011-05-04
      • 2013-11-09
      • 2017-04-09
      • 2016-10-12
      相关资源
      最近更新 更多