[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

一、会下降性能 二、增长了维护成本 三、分库分表中外键不起做用

相关文章
相关标签/搜索