文章目录

  • 一、问题由来
  • 二、问题解决方法
    • 2.1 尝试一
    • 2.2 尝试二
  • 三、拓展-修改变量副作用
  • 四、结语

一、问题由来

该问题的发现是从测试环境向生产环境导数据时产生的,执行导入就报Cannot add foreign key constraint外键的错,刚开始以为是数据的问题,但是反复查看并没有发现有什么问题,陷入了僵局。

二、问题解决方法

经过各种查资料,了解到了其实就是因为外键检查导致的错误,于是就想到了我们可以临时关闭外键检查,这样等我们完成数据的导入,再进行开启那么就可以了。说干就干,查询mysql的官方手册,我们进行了尝试:

2.1 尝试一

我们大部分人在该步骤就可以解决问题,但是有时我们需要用尝试二的方法去解决,究其根本原因,我认为就是全局和局部的问题

select @@FOREIGN_KEY_CHECKS

结果如下,我们可以看到默认为1,代表检查外键,这就是我们导入数据报错的原因所在:

那么我们就可以将其置为0,即不检查外键这样就可以解决问题。命令如下:

SET @@FOREIGN_KEY_CHECKS=0;

很多时候截至到该步骤我们重新导入就会发现问题已经解决了,记得完成导入数据之后或者其他操作之后记得将值重新置为1。

SET @@FOREIGN_KEY_CHECKS=1;

但是有时候会发现问题没有被解决,我们接着看步骤二。

2.2 尝试二

在第一步的基础我们加上@@GLOBAL,即设置为全局变量,我的问题也就是在尝试二解决的。我们仍然先看一下默认值:

select @@global.FOREIGN_KEY_CHECKS

查询结果为:

然后我们将其设置为0:

SET @@global.FOREIGN_KEY_CHECKS=0;

然后我们执行select语句,确认已经修改成0了,我们开始导入数据或者其他的操作,我们会发现已经成功了,执行完我们的业务之后,我们记得将值修改会原来的值。

SET @@global.FOREIGN_KEY_CHECKS=1;

三、拓展-修改变量副作用

该部分内容是对上边内容的一个拓展,是想分享一个理念,我们并不是为了解决问题而解决问题,我们需要有更深层次的思考,虽然变量被修改后我们的问题解决了,但是并不是所有的变量都适合去修改的,我们在实践的过程中一定要分清楚,我们就举一个具体的例子来说明。

 - query-cache-size

该值在MySQL启动的时候是一次性分配并初始化好的,如果我们在运行时修改该值(即使是修改成一样的值),mysql也会立刻马上删除所有缓存的查询并重新分配到指定大小,并重新初始化内存。因为数据库是逐个清除缓存的,不是一下子全部干掉,所以这个过程可能需要花费较长的时间,而且在完成之前服务器都无法对外服务。

这样我们推理一下就会发现其中的利害关系,所以我们在设置变量的时候一定要慎之又慎,别一不小心干出被离职的事情。

四、结语

道阻且长,行则将至,行而不辍,未来可期,加油。

如果文章解决了你的问题,对你的进步有那么一点帮助,那么就给点个赞支持一下,如果觉得文章非常对你的胃口,那么欢迎你关注我,这里有资源,有内推,有和你志同道合的朋友,咱们一起打怪升级。

Cannot add foreign key constraint全网唯一全面正解相关推荐

  1. mysql 1215_mysql执行带外键的sql文件时出现mysql ERROR 1215 (HY000): Cannot add foreign key constraint的解决...

    ERROR 1215 (HY000): Cannot add foreign key constraint 最近在建表时遇到了这个错误,然后找了下找到了解决办法,记录下: 本来是要建两张表: 出现下面 ...

  2. 解决“Cannot add foreign key constraint”

    今天在添加外键时出现报错:"Cannot add foreign key constraint",折腾一番后找到了原因,特此记录一下. 现有以下两张表: 表名 主键 respons ...

  3. mysql 导入数据 1215,导入sql出现:#1215 – Cannot add foreign key constraint错误的解决办法...

    今天在数据库后台导入一个mysql文件时,出现了:1215 – Cannot add foreign key constraint这样的错误提示. 百度了一下,网友们给出的解决办法一般是这样的: 外键 ...

  4. Error 1215:Cannot add foreign key constraint

    今天用数据库时出现 Error 1215:Cannot add foreign key constraint 报错,在经历了一番波折后解决了问题的所在,写下这篇博客记录一下. 运行的代码: CREAT ...

  5. cannot add foreign key constraint mysql_解决1215 - cannot add foreign key constraint

    1215 - cannot add foreign key constraint发生在为数据表添加外键时,一旦发生,还是挺痛苦的.在此,参考相关文章及本人经验做一下总结: 情况一:数据表存储引擎不一致 ...

  6. Hibernate报错 Cannot add foreign key constraint

    Hibernate 一直报错 org.springframework.boot.SpringApplication:reportFailure:771-Application startup fail ...

  7. Cannot add foreign key constraint常见原因总结

    foreign key 不能添加常见原因: 1.检查是否指向的键是主键. 2.检查是否已经建立了索引,一个外键必然会有一个索引. 3.检查是否表内已经存有数据,导致约束失败 4.检查被参考键和参考键的 ...

  8. mysql添加外键约束失败cannot add foreign key constraint

    一般来说出现此种错误的要注意是否有如下情况发生: 1.外键字段不能为该表的主键 2.外键字段参考字段必须为参考表的主键 3.字段数据类型必须一致 4.数据库表引擎必须一致 5.字符集和排序规则必须一致 ...

  9. 1215 - Cannot add foreign key constraint

    2019独角兽企业重金招聘Python工程师标准>>> 参考网页 https://blog.csdn.net/yiwangxiblog/article/details/5226952 ...

最新文章

  1. Linux配置协同工作目录,Linux学习二:文件权限与目录配置
  2. 【翻译】Apache Hbase新特性--MOB支持(一)
  3. 产品研究:安装程序 或 移动端APP 为什么这么占用空间?
  4. 【机器学习】一文归纳AI数据增强之法
  5. vue骨架屏、时间选择器、轮播图。。你想要的这里全都有
  6. 电脑技巧:Win10系统中的这六种模式介绍
  7. 深入理解golang 的栈
  8. 互联网晚报 | 12月31日 星期五 | 滴滴发布上市后首份财报;商汤科技正式登陆港交所;我国高铁运营里程突破4万公里...
  9. 点点文刊 -- 记录生活的色彩
  10. CentOS 7 各个版本的区别
  11. Linux学习笔记7-磁盘管理
  12. IPSec隧道配置案例(手动模式)
  13. 个性化推荐算法-协同过滤
  14. ROS外接usb摄像头标定方法
  15. 论计算机应用技术对企业信息化的影响
  16. Windows Phone 项目实战之我的微盘
  17. 谜题(Puzzle)
  18. 华为路由器忘记密码_如果忘记密码,如何访问路由器
  19. 作为一名大学生,为什么会直接选择IT培训?IT培训有什么好处?
  20. 鲲鹏平台兼容的操作系统介绍

热门文章

  1. Windows Service服务程序的原理及实现(0)服务主函数 控制处理函数
  2. 08-F. 电视机与遥控器(友元类)
  3. Spring是如何解决循环依赖的?
  4. 如果你现在是蚂蚁花呗的产品负责人,你要怎么做才能把花呗的营业额提升一倍?
  5. 数字签名算法类别及用途
  6. PCB设计基础---凯利讯半导体
  7. Easyui linkbutton的启用和禁用
  8. SLAM学习资料汇总-超全
  9. 《探索文心千帆大模型平台: 代码编写从此变得轻松》
  10. Ivan comes again set用法