MySQL設置外鍵報錯 #1452 - Cannot add or update a child row: a foreign key constraint fails 解決方法


  MySQL數據庫,當我嘗試在A表中設置B表的主鍵為外鍵時,報出錯誤:#1452 - Cannot add or update a child row: a foreign key constraint fails 

 

  

  於是去搜索了一下 "#1452 - Cannot add or update a child row: a foreign key constraint fails" 的含義與解決方法,根據這篇博文去排查了報錯原因,排除了可能1和可能2,然后去研究可能3的具體含義,一開始並沒有理解“值不匹配”的含義,只是直覺性地去檢查了一下目標字段在兩個表中的值,發現A表中有一行數據該字段的值在B表中已經刪除了,這就導致了所謂的“值不匹配”的問題,然后手動刪除了A表中的該條廢棄數據,再次設置外鍵就成功了。

 

 

  最后貼一下參考的原文,原文鏈接:https://blog.csdn.net/weixin_43713105/article/details/89396870

報錯的原因大概分為三種:

  原因一:

    添加的外鍵列與另一個表的唯一索引列(一般是主鍵)的數據類型不同
  原因二:
    要添加外鍵的表類型與另一個表的存儲引擎是不是都為innodb引擎
    #查看表引擎
      法一: show create table 表名;
      法二:show table status from 數據庫 where name=‘表名’;
      法三:use information_schema;
         select table_catalog,table_schema,table_name,engine from tables
         where table_schema=‘數據庫名’ and table_name=‘表名’;
  原因三:
    設置的外鍵與另一個表中的唯一索引列(一般是主鍵)中的值不匹配
    #解決辦法:刪除要成為外鍵的列,再次創建並默認為NULL


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM