文章目录

  • 1. 出现报错
  • 2. 解决方案
  • 3. 追溯原因
    • 3.1 简单的原因
    • 3.2 棘手的原因

1. 出现报错

  • 在进行mysq关系l数据库到neo4j图数据库转换的时候,转换规则涉及到外键,所以需要对之前的mysql数据集添加外键。
  • 添加过程中出现以上错误。

2. 解决方案

网上最常见的一种解决方案是:

# 切换到外键有问题的那个表,关闭外键检查约束
alter table_name SET FOREIGN_KEY_CHECKS=0;# 设置外键(一般是修改时添加外键约束)
ALTER TABLE <数据表名> ADD CONSTRAINT <索引名>
FOREIGN KEY(<列名>) REFERENCES <主表名> (<列名>);# 然后把这个表的外键检查给设置回1
alter table_name SET FOREIGN_KEY_CHECKS=1;

这种方案其实违背了外键的约束性,直接把检查关掉了,那么你设置的外键是否符合数据库设计规则就无法保证。数据库模式可能就不是很好。

同时,出现这个问题,肯定不是mysql数据库抽风了,故意搞你。肯定是你的表有问题,或者是你设置有问题,找到这个原因才更重要

参考:

  • https://stackoverflow.com/questions/21659691/error-1452-cannot-add-or-update-a-child-row-a-foreign-key-constraint-fails

3. 追溯原因

造成这个错误的原因很多,我整理了一下。

3.1 简单的原因

1. 同一个数据库中外键名称要唯一

比如上面,外键名为:poet_ibfk_1

如果直接使用Navicat这类工具,这个外键名称是自动帮你生成的,ibfk是InnoDB Foreign Key的缩写。外键的一种常用命名方式是表名_fk_序号,“icity”表中的第一个外键就是“icity_fk_1”

当然,如果是自己直接sql语句插入的,那需要注意。


2. 外键设置错了表(我的错误)

搞不清Navicat中参照表,被参照表和外键的关系,概念模糊,所以报错。而且不容易发现!

比如对于下面的数据库来说,设置外键的时候,应该在poet_to_poemverse_to_poem上设置,我一开始就设置在其他三个单表里,所以就报错了!

3.2 棘手的原因

  • 如果是像上面只是命名有问题,那属于个人代码的失误。这种是比较简单的
  • 但是如果是由于违反了数据库设计中关于外键的限制(也就是数据本身的数据有问题,或者数据之间的引用有问题),那就不好改了。。
  • 上面关闭外键检查,来把这个外键插入,其实是避开了数据库本身存在的问题,其实并不推荐。关于外键的理论,比较长,放在了另一个博客:数据库外键理论及MySQL外键实现规定

1. 取值有问题

参考:数据库外键理论及MySQL外键实现规定

举例来说,有一个诗人表,还有一个诗人诗歌对应表,后者引用前者的诗人id。如果对后面的表设置外键,报错。那么很有可能是因为诗人诗歌表中的诗人id,有不属于诗人表的(不是引用自诗人表),对于这些诗人id,要么就是删掉整列,要么就是把对应行的诗人id这个属性取空值。


2. 表有问题

参考:数据库外键理论及MySQL外键实现规定

  • 可能引用(参照)表和目标表,使用的存储引擎不同,一般都要求是InnoDB。
  • 可能引用表上对应的外键列没有建立索引!(MySQL要求建立,这样可以加快外键检查的速度,而不用扫描整张表)

参考:

  • https://cloud.tencent.com/developer/ask/60529
  • https://stackoverflow.com/questions/21659691/error-1452-cannot-add-or-update-a-child-row-a-foreign-key-constraint-fails

mysql 1452 Cannot add or update a child row: a foreign key constraint fails相关推荐

  1. Mysql错误1452 - Cannot add or update a child row: a foreign key constraint fails 怎么办?

    删除要成为外键的列. 再次创建它 尝试再次将其设置为外键.

  2. Mysql错误1452 - Cannot add or update a child row: a foreign key constraint fails 原因及解决方法

    报错的原因大概分为三种: 原因一: 添加的外键列与另一个表的唯一索引列(一般是主键)的数据类型不同 原因二: 要添加外键的表类型与另一个表的存储引擎是不是都为innodb引擎 #查看表引擎 法一: s ...

  3. 关于mysql数据库的外键插入报错:Cannot add or update a child row: a foreign key constraint fails,完整性问题

    关于mysql的外键插入报错:Cannot add or update a child row: a foreign key constraint fails..... 首先确定sql语句的正确 然后 ...

  4. Mysql添加数据时失败 Cannot add or update a child row: a foreign key constraint fails

    报错: Cannot add or update a child row: a foreign key constraint fails (`zy_test`.`order_item`, CONSTR ...

  5. JPA 数据库添加数据报错:Cannot add or update a child row: a foreign key constraint fails

    最近写jpa 的单项多对多,出现的错误,记录一下 java.sql.SQLIntegrityConstraintViolationException: Cannot add or update a c ...

  6. Cannot add or update a child row: a foreign key constraint fails都有哪些原因

    文章目录 前言 可能原因 1. 外键字段的数据类型 不匹配 2. 外键对应的表没有相应的数据 转载请标明出处: https://bigmaning.blog.csdn.net/article/deta ...

  7. SQL 错误 Cannot add or update a child row: a foreign key constraint fails (`o2o`.`tb_product_img`, CON

    Cannot add or update a child row: a foreign key constraint fails (`o2o`.`tb_product_img`, CONSTRAINT ...

  8. 解决 mysql 插入数据报错: Cannot add or update a child row: a foreign key constraint fails

    前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家.点击跳转到教程. 场景:我的情况是主表为用户 user 表,从表为职位 job 表,其中 job 表有一个外键为 us ...

  9. 1452-Cannot add or update a child row: a foreign key constraint fails

    1.错误描述 MySQL 2.错误原因 t_nums表中的name不属于t_stu表中的name,t_stu表中的name是字母和数字构成的,而t_nums表中name是数字构成的,两者没有重合的部分 ...

最新文章

  1. centos7上搭建http服务器以及设置目录访问
  2. PHP开发中常见的安全问题详解和解决方法
  3. 构造函数 – WebSocket
  4. 【Android 逆向】Dalvik 函数抽取加壳 ( 类加载流程分析 | ClassLoader#loadClass 函数分析 | BaseDexClassLoader#findClass 分析 )
  5. 数据oem 操作手册_海口电销外呼系统oem-河南爱聊科技
  6. 深入理解javascript函数参数
  7. Python学习-day20 django进阶篇
  8. python3.7安装Numpy库
  9. app安全渗透测试详细方法流程
  10. 分布式,嵌入式,集群三种操作系统
  11. 谷歌账号Gmail邮箱修改密码提示需要手机设备验证码如何处理
  12. python编程自学网-python自学网
  13. step1:准备歌词之《前端开发是个啥》
  14. JavaWeb之JavaScript及应用
  15. flash驱动(一):Linux MTD子系统
  16. 苹果 2017 秋季产品发布会直播预告
  17. 计算机视觉论文-2021-05-28
  18. dnSpy反编译工具调试netcore项目
  19. 微信小程序用定时器实现倒计时效果
  20. python自动对齐格式快捷键_ppt里自动对齐快捷键是什么,PowerPoint里自动对齐快捷键是什么?...

热门文章

  1. SEO培训联盟排名掉的原因:宋星博客?
  2. ISO15765协议
  3. 遗传算法中常见遗传算子
  4. ubuntu18.04双系统解决进入桌面后鼠标和键盘失灵问题
  5. 增加对ARM64和X86的硬件预取控制驱动的支持
  6. 神器大师泰兹瑞与威穆
  7. 租房心经--教你如何租房子
  8. 大数据平台及数仓的通用架构和技术体系
  9. python 实时监控日志文件_Python动态监控日志的内容
  10. java poi 导入报错,Cannot get a NUMERIC value from a STRING cell