提问人:Richard Knop 提问时间:11/3/2010 最后编辑:OMG PoniesRichard Knop 更新时间:7/2/2018 访问量:108087
#1025 - 将“./database/#sql-2e0f_1254ba7”重命名为“./database/table”时出错(错误编号:150)
#1025 - Error on rename of './database/#sql-2e0f_1254ba7' to './database/table' (errno: 150)
问:
因此,我正在尝试将主键添加到数据库中的一个表中。现在它有一个主键,如下所示:
PRIMARY KEY (user_id, round_number)
其中 user_id 是外键。
我正在尝试将其更改为:
PRIMARY KEY (user_id, round_number, created_at)
我在phpmyadmin中通过单击表结构视图中的主键图标来执行此操作。
这是我收到的错误:
#1025 - Error on rename of './database/#sql-2e0f_1254ba7' to './database/table' (errno: 150)
它是一个带有 InnoDB 表引擎的 MySQL 数据库。
答:
可能还有另一个表,其中有一个外键引用了您尝试更改的主键。
要找出导致错误的表,您可以运行,然后查看该部分。SHOW ENGINE INNODB STATUS
LATEST FOREIGN KEY ERROR
评论
对于那些通过谷歌解决这个问题的人......如果您尝试重命名充当外键的字段,也可能发生此错误。
如前所述,您需要删除之前的 FK。在Mysql上,这样做是这样的:
ALTER TABLE `table_name` DROP FOREIGN KEY `id_name_fk`;
ALTER TABLE `table_name` DROP INDEX `id_name_fk`;
评论
要在 PHPMyAdmin 或 MySQL 中绕过此操作,请先删除外键约束,然后再重命名属性。
(对于 PHPMyAdmin 用户:要删除 PHPMyAdmin 中的 FK 约束,请选择该属性,然后单击表格结构下方工具栏中“打印视图”旁边的“关系视图”)
评论
如果您尝试删除作为 FOREIGN KEY 的列,则必须找到正确的名称,而不是列名。例如:如果我尝试删除 Alarms 表中的 server 字段,该字段是 servers 表的外键。
SHOW CREATE TABLE alarm;
寻找这条线。CONSTRAINT `server_id_refs_id_34554433` FORIEGN KEY (`server_id`) REFERENCES `server` (`id`)
ALTER TABLE `alarm` DROP FOREIGN KEY `server_id_refs_id_34554433`;
ALTER TABLE `alarm` DROP `server_id`
这将从 Alarms 表中删除外键服务器。
我有这个问题,它是外键的
单击“关系视图
”(如下图所示),然后找到要删除的字段的名称,然后在“外键约束”(INNODB)
列下,只需将选择放到任何位置即可!表示没有外键
希望能奏效!
如果要添加外键并遇到此错误,则可能是子表中的值在父表中不存在。
假设对于必须添加外键的列,所有值都设置为 0,并且该值在您引用它的表中不可用。
您可以设置父表中存在的一些值,然后添加外键对我有用。
评论