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

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

Patricia Arquette
發布: 2024-12-28 09:21:11
原創
271 人瀏覽過

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板