为了账号安全,请及时绑定邮箱和手机立即绑定

无法添加或更新子行:外键约束失败

无法添加或更新子行:外键约束失败

蝴蝶不菲 2019-10-06 15:12:16
表格1+----------+-------------+------+-----+---------+----------------+| Field    | Type        | Null | Key | Default | Extra          |+----------+-------------+------+-----+---------+----------------+| UserID   | int(11)     | NO   | PRI | NULL    | auto_increment || Password | varchar(20) | NO   |     |         |                || Username | varchar(25) | NO   |     |         |                || Email    | varchar(60) | NO   |     |         |                |+----------+-------------+------+-----+---------+----------------+表2+------------------+--------------+------+-----+---------+----------------+| Field            | Type         | Null | Key | Default | Extra          |+------------------+--------------+------+-----+---------+----------------+| UserID           | int(11)      | NO   | MUL |         |                || PostID           | int(11)      | NO   | PRI | NULL    | auto_increment || Title            | varchar(50)  | NO   |     |         |                || Summary          | varchar(500) | NO   |     |         |                |+------------------+--------------+------+-----+---------+----------------+错误:com.mysql.jdbc.exceptions.MySQLIntegrityConstraintViolationException: Cannot add or update a child row: a foreign key constraint fails (`myapp/table2`, CONSTRAINT `table2_ibfk_1` FOREIGN KEY (`UserID`) REFERENCES `table1` (`UserID`)) 我做错了什么?我阅读了http://www.w3schools.com/Sql/sql_foreignkey.asp,但看不到有什么问题。
查看完整描述

4 回答

?
胡说叔叔

TA贡献1804条经验 获得超8个赞

您收到此错误的原因是,您试图基于当前存储在中的值table2向该行添加/更新该行的UserID字段没有有效值table1。如果您发布更多代码,我可以帮助您诊断具体原因。


查看完整回答
反对 回复 2019-10-06
?
慕后森

TA贡献1802条经验 获得超5个赞

一个简单的技巧可以是在对表执行任何操作之前禁用外键检查。只需查询


SET FOREIGN_KEY_CHECKS=0

这将禁用与任何其他表的外键匹配。完成表后,再次启用它


SET FOREIGN_KEY_CHECKS=1

这对我很有效。


查看完整回答
反对 回复 2019-10-06
  • 4 回答
  • 0 关注
  • 2021 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信