Cannot add foreign key constraint全网唯一全面正解
文章目录
- 一、问题由来
- 二、问题解决方法
- 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全网唯一全面正解相关推荐
- mysql 1215_mysql执行带外键的sql文件时出现mysql ERROR 1215 (HY000): Cannot add foreign key constraint的解决...
ERROR 1215 (HY000): Cannot add foreign key constraint 最近在建表时遇到了这个错误,然后找了下找到了解决办法,记录下: 本来是要建两张表: 出现下面 ...
- 解决“Cannot add foreign key constraint”
今天在添加外键时出现报错:"Cannot add foreign key constraint",折腾一番后找到了原因,特此记录一下. 现有以下两张表: 表名 主键 respons ...
- mysql 导入数据 1215,导入sql出现:#1215 – Cannot add foreign key constraint错误的解决办法...
今天在数据库后台导入一个mysql文件时,出现了:1215 – Cannot add foreign key constraint这样的错误提示. 百度了一下,网友们给出的解决办法一般是这样的: 外键 ...
- Error 1215:Cannot add foreign key constraint
今天用数据库时出现 Error 1215:Cannot add foreign key constraint 报错,在经历了一番波折后解决了问题的所在,写下这篇博客记录一下. 运行的代码: CREAT ...
- cannot add foreign key constraint mysql_解决1215 - cannot add foreign key constraint
1215 - cannot add foreign key constraint发生在为数据表添加外键时,一旦发生,还是挺痛苦的.在此,参考相关文章及本人经验做一下总结: 情况一:数据表存储引擎不一致 ...
- Hibernate报错 Cannot add foreign key constraint
Hibernate 一直报错 org.springframework.boot.SpringApplication:reportFailure:771-Application startup fail ...
- Cannot add foreign key constraint常见原因总结
foreign key 不能添加常见原因: 1.检查是否指向的键是主键. 2.检查是否已经建立了索引,一个外键必然会有一个索引. 3.检查是否表内已经存有数据,导致约束失败 4.检查被参考键和参考键的 ...
- mysql添加外键约束失败cannot add foreign key constraint
一般来说出现此种错误的要注意是否有如下情况发生: 1.外键字段不能为该表的主键 2.外键字段参考字段必须为参考表的主键 3.字段数据类型必须一致 4.数据库表引擎必须一致 5.字符集和排序规则必须一致 ...
- 1215 - Cannot add foreign key constraint
2019独角兽企业重金招聘Python工程师标准>>> 参考网页 https://blog.csdn.net/yiwangxiblog/article/details/5226952 ...
最新文章
- Linux配置协同工作目录,Linux学习二:文件权限与目录配置
- 【翻译】Apache Hbase新特性--MOB支持(一)
- 产品研究:安装程序 或 移动端APP 为什么这么占用空间?
- 【机器学习】一文归纳AI数据增强之法
- vue骨架屏、时间选择器、轮播图。。你想要的这里全都有
- 电脑技巧:Win10系统中的这六种模式介绍
- 深入理解golang 的栈
- 互联网晚报 | 12月31日 星期五 | 滴滴发布上市后首份财报;商汤科技正式登陆港交所;我国高铁运营里程突破4万公里...
- 点点文刊 -- 记录生活的色彩
- CentOS 7 各个版本的区别
- Linux学习笔记7-磁盘管理
- IPSec隧道配置案例(手动模式)
- 个性化推荐算法-协同过滤
- ROS外接usb摄像头标定方法
- 论计算机应用技术对企业信息化的影响
- Windows Phone 项目实战之我的微盘
- 谜题(Puzzle)
- 华为路由器忘记密码_如果忘记密码,如何访问路由器
- 作为一名大学生,为什么会直接选择IT培训?IT培训有什么好处?
- 鲲鹏平台兼容的操作系统介绍