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

表格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,但看不到有什么问题。


蝴蝶不菲
浏览 2063回答 4
4回答

胡说叔叔

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

慕后森

一个简单的技巧可以是在对表执行任何操作之前禁用外键检查。只需查询SET FOREIGN_KEY_CHECKS=0这将禁用与任何其他表的外键匹配。完成表后,再次启用它SET FOREIGN_KEY_CHECKS=1这对我很有效。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

MySQL