【问题标题】:Help with: ERROR 1025 (HY000): Error on rename of .... (errno: 150)帮助:错误1025(HY000):重命名....时出错(错误号:150)
【发布时间】:2011-05-10 10:31:51
【问题描述】:

当我尝试运行 alter table 命令删除列时出现此错误: 错误 1025 (HY000): 重命名 .... 时出错 (errno: 150)。

如果我理解正确,这是一个外键问题,但我不知道如何解决它。有人会这么好心告诉我如何让它工作吗?

建表代码:

CREATE TABLE categories(
cid INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
assets_id INT NOT NULL,
cat_name VARCHAR(30) NOT NULL,
INDEX(assets_id),
FOREIGN KEY (assets_id) REFERENCES asset(aid) ON UPDATE CASCADE

)
ENGINE=INNODB DEFAULT CHARSET=utf8;

alter 命令:

ALTER TABLE categories DROP COLUMN assets_id;

表格类别完全空白。所以没有信息可以触发 CASCADE 限制。所以你能帮我删除列assets_id需要什么样的魔法。谢谢。

【问题讨论】:

    标签: mysql


    【解决方案1】:

    使用SHOW CREATE TABLE categories 显示约束名称。

    很可能是categories_ibfk_1

    使用名称先删除外键,然后使用列:

    ALTER TABLE categories DROP FOREIGN KEY categories_ibfk_1;
    ALTER TABLE categories DROP COLUMN assets_id;
    

    【讨论】:

    • @Henkka:我很高兴。请将答案标记为已接受(并对您提出的其他问题也这样做),这将鼓励人们为您提供更多帮助。
    • @Henkka:每个答案的投票数下方都有一个复选标记。单击它使其变为绿色。
    【解决方案2】:

    对我来说,问题是另一个问题:

    该网站(意外地)可供所有人访问。所以更新脚本被多次启动。这导致了引发此类错误的竞争条件。

    -> 确保站点只被访问一次,直到每个脚本都完成!

    【讨论】:

      猜你喜欢
      • 2013-11-09
      • 2011-04-24
      • 2011-05-04
      • 1970-01-01
      • 2013-04-27
      • 2011-05-01
      • 1970-01-01
      • 1970-01-01
      • 2015-01-26
      相关资源
      最近更新 更多