zoukankan      html  css  js  c++  java
  • [MySQL] MySQL中关于外键报错的解决和建议

    一、缘由

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

    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、分库分表中外键不起作用

     

     

  • 相关阅读:
    React Native的生命周期解析
    React Native中组件的props和state
    centos7修改主机名
    nodejs搭建web项目
    centos7默认防火墙firewalld
    初窥 MongoDB
    阿里云Ubuntu安装图形界面与中文语言包
    安装nginx
    PHP静态化技术
    PHP工厂模式
  • 原文地址:https://www.cnblogs.com/langdashu/p/6878325.html
Copyright © 2011-2022 走看看