簡體   English   中英

添加外鍵時出錯

[英]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 KEYFOREIGN KEY等。

如果您在嘗試在ALTER ..語句中使用的結果中看到任何鍵名,則應該對其進行修改並執行。

在將任何約束添加到已經有一些數據的表之前,可能會導致此問題,請嘗試添加沒有數據的約束

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM