同时加入外键错误(Error while adding Foreign key)

2019-10-19 06:01发布

我使用MySQL工作台。 我已经作出了桌子上。 现在,我想添加一个表的外键被称为Personal_Details该密钥是在主键Login表。

但是,当我试图这样做,它让我看到以下错误:

ERROR 1005: Can't create table 'shaadiDB.#sql-404_25' (errno: 121)

SQL语句:

ALTER TABLE `shaadiDB`.`Personal_Details` 
  ADD CONSTRAINT `Login_Id`
  FOREIGN KEY (`Login_Id` )
  REFERENCES `shaadiDB`.`Login` (`Login_Id` )
  ON DELETE NO ACTION
  ON UPDATE NO ACTION
, ADD INDEX `Login_Id` (`Login_Id` ASC)

Answer 1:

添加任何约束到已经有一些数据可能会导致此问题的表格之前,尝试添加与出数据约束



Answer 2:

这似乎表Personal_Details是从哪里来的可能有一些行与LOGIN_ID针对条目不存在于表中的数据Login

如果是这种情况,那么解决办法是,你需要将数据移动到另一个表,然后添加约束。 添加约束后,您需要通过1回添加所有行表1。



Answer 3:

错误121:此错误时,有关键名的复制明确异常。

您运行后立即Alter ...语句,执行以下,并观察结果。

SHOW ENGINE InnoDB STATUS;

从结果说明文字会告诉你哪个键名的复制被发现。 根据您修改ALTER ...语句并执行。

另外,您还可以找到,如果任何这样的重复键名称由执行定义:

select constraint_name, constraint_type, table_name
from information_schema.table_constraints
where table_schema = DATABASE() -- and constraint_type = 'foreign key'

约束类型可以是像什么PRIMARY KEYFOREIGN KEY ,等等。

如果您看到的结果没有任何按键名称,您正试图在你使用ALTER ..语句,你应该对其进行修改和执行。



文章来源: Error while adding Foreign key