文档章节

外键记录有存在,插入数据却报错a foreign key constraint fails

zchuanzhao
 zchuanzhao
发布于 2017/07/18 21:48
字数 304
阅读 192
收藏 1

今天在MySQL的一张表里插记录时,出现一个错误提示:

Cannot add or update a child row: a foreign key constraint fails (`jeesns`.`tbl_article`, CONSTRAINT `fk_article_archive` FOREIGN KEY (`archive_id`) REFERENCES `tbl_archive` (`archive_id`) ON DELETE CASCADE ON UPDATE CASCADE)
; SQL []; Cannot add or update a child row: a foreign key constraint fails (`jeesns`.`tbl_article`, CONSTRAINT `fk_article_archive` FOREIGN KEY (`archive_id`) REFERENCES `tbl_archive` (`archive_id`) ON DELETE CASCADE ON UPDATE CASCADE); nested exception is com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Cannot add or update a child row: a foreign key constraint fails (`jeesns`.`tbl_article`, CONSTRAINT `fk_article_archive` FOREIGN KEY (`archive_id`) REFERENCES `tbl_archive` (`archive_id`) ON DELETE CASCADE ON UPDATE CASCADE)

查看tbl_archive表,发现该记录有存在,再手动直接在tbl_article表中插入数据,还是提示

a foreign key constraint fails

无奈,搜索很多文章都是说外键不存在,可是外键命名是存在的,就手动把外键fk_article_archive删除,可以正常插入数据,但是无法再添加外键

ALTER TABLE `tbl_article` ADD CONSTRAINT `fk_article_archive` FOREIGN KEY (`archive_id`) REFERENCES `tbl_archive` (`archive_id`) ON DELETE CASCADE ON UPDATE CASCADE;

经过对比,发现tbl_article使用的存储引擎是InnoDB,而tbl_archive使用的存储引擎是MyISAM,尝试将tbl_archive表的存储引擎改成InnoDB,就正常插入数据了。

因为之前没有遇到过这样的问题,特此记录,以备遗忘。

© 著作权归作者所有

共有 人打赏支持
zchuanzhao
粉丝 50
博文 242
码字总数 145449
作品 1
福州
程序员
私信 提问
加载中

评论(1)

开源中国首席公关
开源中国首席公关
MYISAM引擎不支持行级锁和外键
数据库建表

我想在一个字段上添加两个外键,建表是成功了,可是数据插入的时候就报错了。 报错如下: [Err] 1452 - Cannot add or update a child row: a foreign key constraint fails (`gascrm`.`r_c...

落后君丶
2018/06/05
173
2
mysql 使用foreign key(外键) 插入约束

实验: //创建父表,并添加索引 CREATE TABLE parent(id INT,msg VARCHAR(200), INDEX indexid(id)); //查看索引 SHOW INDEX FROM parent; //创建子表(外键) CREATE TABLE child (cid INT,......

被啃的窝瓜
2017/05/12
0
0
补12.关于mysql的外键约束

一、什么是mysql中的外键(froeign key) 假如说有两张表,其中一张表的某个字段指向了另一张表的主键,这就可以称之为外键(froeign key)。 在子表中增加一条记录时,需要确定是否有与父表相...

苏浩智
2017/06/06
0
0
mysql foreign key(外键) 说明与实例

mysql foreign key(外键) 说明与实例 一,什么是foreign key,及其完整性 个人觉得,foreign key就是表与表之间的某种约定的关系,由于这种关系的存在,我们能够让表与表之间的数据,更加的完...

henosteven
2012/08/27
0
0
mysql的外键探讨

在MySQL 3.23.44版本后,InnoDB引擎类型的表支持了外键约束。 一,什么是foreign key,及其完整性 个人觉得,foreign key就是表与表之间的某种约定的关系,由于这种关系的存在,我们能够让表与...

双月通天
2016/03/25
52
0

没有更多内容

加载失败,请刷新页面

加载更多

3.系统和内存架构

在设计程序或并发系统时,需要考虑不同的系统和内存架构风格。 支持并发的计算机系统体系结构 1972年,迈克尔弗林(Michael Flynn)给出了用于分类不同风格计算机系统体系结构的分类法。 该分类...

Eappo_Geng
25分钟前
4
0
今天的学习

1,getimagesize:获得目标图像的大小 2,image_type_to_extension:获得目标文件的后缀信息 3,imagealphablending:设定目标图像混色的模式 4,imagechar:水平的画出一个字符 5,imagecharup...

墨冥
28分钟前
1
0
Java线程中yield与join方法的区别

长期以来,多线程问题颇为受到面试官的青睐。虽然我个人认为我们当中很少有人能真正获得机会开发复杂的多线程应用(在过去的七年中,我得到了一个机会),但是理解多线程对增加你的信心很有用。...

飓风2000
51分钟前
4
0
Python的 is 和 == 弄懂了吗?

在Python中一切都是对象。 Python中对象包含的三个基本要素,分别是: id(身份标识) type(数据类型) value(值) 对象之间比较是否相等可以用 == ,也可以用 is 。 is 和 == 都是对对象进行比较...

上海小胖
52分钟前
2
0
angularJS 路由加载js controller 未定义 解决方案

说明 本文主要说明,在angularJS框架使用中,angularJS 路由加载js controller 未定义 解决方案。 路由 $routeProvider 异步加载js 路由的基本用法,请查看官方文档,下面实例只说明,懒加载...

DrChenXX
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部