[MySQL] MySQL中關於外鍵報錯的解決和建議

1、原因

  今天在恢復從庫和主庫不一樣步的數據時,看到關於外鍵的報錯。sql

ERROR 1451 (23000): Connot delete or update a parent row: a foreign key constarint fails 性能

(`Biz`.`TB_CERTIFICATE_RECORD`, CONSTRAINT `FK_TB_CERTIFICATE_RECORD_CERTIFICATE_ID` FOREIGN KEY (`CERTIFICATE_ID`) REFERENCES `TB_CERTIFICATE` (`ID`))spa

應該是父表沒有恢復記錄,先恢復了子表,遇到有外鍵約束在父表找不到記錄,故報錯。同步

 

2、解決辦法

這裏個人解決辦法是:先使外鍵約束失效,執行SQL, 再恢復約束。date

 

set foreign_key_checks=0; //關閉外鍵檢查程序

 

source xxx.sql數據

 

set foreign_key_checks=1; //開啓外鍵檢查co

 

3、建議

  經過Google得知,MySQL不建議使用外鍵,約束應該交給程序去作。let

  不須要外鍵的緣由以下:delete

一、會下降性能 二、增長了維護成本 三、分庫分表中外鍵不起做用

相關文章
相關標籤/搜索