[英]Error while adding Foreign key
我正在使用Mysql Workbench。 我已经摆好桌子了。 现在,我想在名为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)
似乎表Personal_Details
包含的数据可能包含一些带有Login_Id的行,而该行的条目不在表Login
。
如果是这种情况,那么解决方案是您需要将数据移动到另一个表,然后添加约束。 添加约束后,您需要将所有行加回表1。
错误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 KEY
, FOREIGN KEY
等。
如果您在尝试在ALTER ..
语句中使用的结果中看到任何键名,则应该对其进行修改并执行。
在将任何约束添加到已经有一些数据的表之前,可能会导致此问题,请尝试添加没有数据的约束
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.