mysql 尝试删除列会产生ERROR 1025(HY000):重命名时出错....(errno:150)

osh3o9ms  于 2023-05-16  发布在  Mysql
关注(0)|答案(2)|浏览(154)

我正在尝试运行alter table命令来删除列:

ERROR 1025 (HY000): Error on rename of .... (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;

表类别完全为空。因此,没有设置级联限制的信息。
如何删除assets_id列?

smtd7mpg

smtd7mpg1#

使用SHOW CREATE TABLE categories显示约束的名称。
最有可能是categories_ibfk_1
使用名称首先删除外键,然后删除列:

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

idfiyjo82#

对我来说,问题是另一个:
该网站是(偶然)为每个人访问。所以更新脚本启动了多次。这导致了引发如下错误的争用条件。
->确保网站只被访问一次,直到每个脚本完成!

相关问题