[英]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.