今天在恢复从库和主库不同步的数据时,看到关于外键的报错。

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`))

应该是父表没有恢复记录,先恢复了子表,遇到有外键约束在父表找不到记录,故报错。

 

二、解决办法

这里我的解决办法是:先使外键约束失效,执行SQL, 再恢复约束。

 

set foreign_key_checks=0; //关闭外键检查

 

source xxx.sql

 

set foreign_key_checks=1; //开启外键检查

 

三、建议

  通过Google得知,MySQL不建议使用外键,约束应该交给程序去做。

  不需要外键的原因如下:

1、会降低性能 2、增加了维护成本 3、分库分表中外键不起作用

 

 

 

 

 

 

相关文章:

  • 2021-10-17
  • 2022-01-07
  • 2021-06-11
  • 2022-02-23
  • 2022-12-23
  • 2021-05-12
  • 2022-01-29
  • 2021-12-04
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-09-05
  • 2022-01-15
  • 2021-07-05
  • 2022-01-22
  • 2021-07-25
相关资源
相似解决方案