首頁 >資料庫 >mysql教程 >如何解決MySQL中的「外鍵約束失敗」錯誤?

如何解決MySQL中的「外鍵約束失敗」錯誤?

Patricia Arquette
Patricia Arquette原創
2024-12-28 09:21:11289瀏覽

How to Resolve

解決MySQL 中的「外鍵約束失敗」錯誤

將外鍵加到引用另一個表的現有表時,請確保引用的行是至關重要的存在於父表中。否則,可能會出現「無法新增或更新子行:外鍵約束失敗」錯誤。

在提供的情況下,您嘗試在引用的 sourcecodes_tags 表中新增外鍵 (sourcecode_id)原始碼表。但是,根據您的 SHOW CREATE TABLE 查詢,引用 sourcecodes 表的 sourcecodes_tags 表上似乎沒有定義外鍵。

錯誤訊息表示有外鍵衝突,這表示某些 sourcecode_id sourcecodes_tags 表中的值在 sourcecodes 表中不存在。要解決此問題,您需要識別並刪除這些孤立記錄。

識別孤立記錄

要查找源代碼表中不存在的sourcecode_id 值,您可以使用以下查詢:

SELECT DISTINCT sourcecode_id 
FROM sourcecodes_tags tags 
LEFT JOIN sourcecodes sc ON tags.sourcecode_id=sc.id 
WHERE sc.id IS NULL;

此查詢將傳回sourcecode_id 值不與原始碼表中的任何行關聯。

刪除孤立記錄

識別出孤立記錄後,可以使用DELETE 語句刪除它們:

DELETE FROM sourcecodes_tags
WHERE sourcecode_id IN (
    SELECT DISTINCT sourcecode_id 
    FROM sourcecodes_tags tags 
    LEFT JOIN sourcecodes sc ON tags.sourcecode_id=sc.id 
    WHERE sc.id IS NULL
);

刪除孤立記錄後,您應該能夠新增外鍵約束而無需任何問題。

ALTER TABLE sourcecodes_tags 
ADD FOREIGN KEY (sourcecode_id) 
REFERENCES sourcecodes (id) 
ON DELETE CASCADE ON UPDATE CASCADE;

以上是如何解決MySQL中的「外鍵約束失敗」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn