删除主键 - 外键约束形成不正确

Remove primary key(s) - Foreign key constraint is incorrectly formed

我似乎无法删除 table 中的主键。 所有引用 (FK) 已被删除,但它仍然不允许我删除它。

我想做的是:删除旧主键以添加新主键 - 但保留旧列和数据(只需删除 PK 属性)。

怎么了?

Table:

CREATE TABLE `employee` (
  `User` int(10) unsigned NOT NULL,
  `Company` int(10) unsigned NOT NULL,
  --unrelated boolean fields
  PRIMARY KEY (`User`,`Company`),
  KEY `FK_Employee_Company_idx` (`Company`),
  CONSTRAINT `FK_Employee_Company` FOREIGN KEY (`Company`) REFERENCES `company` (`ID`) ON DELETE NO ACTION ON UPDATE NO ACTION,
  CONSTRAINT `FK_Employee_User` FOREIGN KEY (`User`) REFERENCES `user` (`ID`) ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

正在尝试删除:

alter table Employee
drop primary key;

问题:

Error 1025: Error on rename of '.\DB_NAME#sql-3640_4' to '.\DB_NAME\employee' (errno: 150 "Foreign key constraint is incorrectly formed") SQL Statement: ALTER TABLE DB_NAME.employee DROP PRIMARY KEY

不再引用此 table。我还通过 information_schema.key_column_usage 中 select 的语句进行了检查,但未产生任何结果。

在 Google 上浪费了最后几个小时,但似乎无法弄清楚。


如果可行,添加一个新列:

alter table Employee
add column ID int unsigned not null auto_increment primary key;

现有的 FK 约束仍然需要索引。

添加以下索引(第一个)应该满足该要求:

CREATE INDEX xxx ON employee (User, Company);

Test case