【问题标题】:MySQL Error when dropping index (errno 150)删除索引时出现 MySQL 错误 (errno 150)
【发布时间】:2009-09-20 13:43:03
【问题描述】:

我在删除外键索引时遇到问题,我总是遇到同样的错误

 ALTER TABLE `comments` DROP INDEX `id_user`  

哪个输出

 1025 - Error on rename of './postuj_cz1/#sql-d834_a0c704' 
 to './postuj_cz1/comments' (errno: 150) 

另一张表上的id_user是简单的主键索引。

我使用的是 MySQL 5.0.85 版

【问题讨论】:

  • 尝试先将所有外键放到表中。
  • 其实我桌子上没有fk

标签: mysql sql mysql-error-1025


【解决方案1】:

还有其他原因。例如,我有一个包含两个独立外键列的唯一索引。我必须先删除有问题的外键,然后才能删除唯一索引。 (显然你可以在之后添加外键。)

【讨论】:

  • 谢谢,这就是我的问题。
  • 没错,删除唯一索引导致我的外键引用了一个不可能的“非唯一”字段
【解决方案2】:

INNODB :这可以像在删除索引之前删除关系一样简单。

【讨论】:

  • 就我而言,这种关系锁定了一切。所以,删除关系,接下来删除索引,接下来创建新索引,然后,恢复关系
【解决方案3】:

根据this link,错误与主键字段的定义有关。该错误与外键索引无关。

检查COMMENTS 表的主键,确保它没有UNSIGNED 关键字,而COMMENTS.id_user 外键有UNSIGNED 关键字。这个关键字导致了问题 - 字段类型不一致。

要解决此问题,请将 UNSIGNED 关键字添加到 COMMENTS 表的主键定义中。或者从外键定义中去掉UNSIGNED关键字...

【讨论】:

    【解决方案4】:

    索引是'user'表上的外键,所以 首先,试试这个命令:

    SHOW CREATE TABLE my_table
    

    在外键上找到索引对应的约束名称,

    然后,尝试以下命令:

    ALTER TABLE my_table DROP FOREIGN KEY FK_myconstraintcode
    

    警告:如果您尝试使用外键名称删除外键,则会出错!

    【讨论】:

    • 这对我来说是一个很好的解决方案,似乎是不能用 drop index 语句删除外键。
    猜你喜欢
    • 2011-04-24
    • 1970-01-01
    • 2018-04-14
    • 2015-02-20
    • 2016-07-27
    • 2011-10-15
    • 2012-08-25
    • 1970-01-01
    • 2016-03-07
    相关资源
    最近更新 更多