#1025 - 将'./database/#sql-2e0f_1254ba7'重命名为'./database/table'时出错(错误号:150)

Ric*_*nop 78 mysql sql innodb phpmyadmin mysql-error-1025

所以我试图将一个主键添加到我的数据库中的一个表.现在它有一个这样的主键:

PRIMARY KEY (user_id, round_number)
Run Code Online (Sandbox Code Playgroud)

其中user_id是外键.

我想把它改成这个:

PRIMARY KEY (user_id, round_number, created_at)
Run Code Online (Sandbox Code Playgroud)

我在phpmyadmin中通过单击表结构视图中的主键图标来执行此操作.

这是我得到的错误:

#1025 - Error on rename of './database/#sql-2e0f_1254ba7' to './database/table' (errno: 150)
Run Code Online (Sandbox Code Playgroud)

它是一个带有InnoDB表引擎的MySQL数据库.

Ike*_*ker 134

可能有另一个表,其中一个外键引用了您尝试更改的主键.

要找出导致错误的表,您可以运行SHOW ENGINE INNODB STATUS,然后查看该LATEST FOREIGN KEY ERROR部分.

  • 在我的情况下,数据库是新创建的,根本没有表。 (2认同)

Wel*_*ndo 32

如前所述,您需要先删除FK.在Mysql上这样做:

ALTER TABLE `table_name` DROP FOREIGN KEY `id_name_fk`;

ALTER TABLE `table_name` DROP INDEX `id_name_fk`;
Run Code Online (Sandbox Code Playgroud)


Dav*_*e C 23

对于那些通过谷歌获得此问题的人...如果您尝试重命名充当外键的字段,也会发生此错误.


Laz*_*rks 13

要在PHPMyAdmin或MySQL中绕过它,首先在重命名属性之前删除外键约束.

(对于PHPMyAdmin用户:要删除PHPMyAdmin中的FK约束,请选择该属性,然后单击表结构下方工具栏中"打印视图"旁边的"关系视图")


Bon*_*ese 5

如果您尝试删除属于 FOREIGN KEY 的列,则必须找到不是列名的正确名称。例如:如果我试图删除警报表中的服务器字段,它是服务器表的外键。

  1. SHOW CREATE TABLE alarm; 寻找CONSTRAINT `server_id_refs_id_34554433` FORIEGN KEY (`server_id`) REFERENCES `server` (`id`)线路。
  2. ALTER TABLE `alarm` DROP FOREIGN KEY `server_id_refs_id_34554433`;
  3. ALTER TABLE `alarm` DROP `server_id`

这将从警报表中删除外键服务器。


M98*_*M98 5

我遇到了这个问题,是外键问题

单击Relation View(如下图所示),然后找到要删除的字段的名称,然后在该Foreign key constraint (INNODB)列下,将选择设置为空!意味着没有外键

在此输入图像描述

希望有效!