1452: Cannot add or update a child row: a foreign key constraint fails(无法添加或更新子行:外键约束失败)
MySQL含义
你正在插入或更新子行,但其指向的父键值在被引用表中不存在;外键约束拒绝了该操作。
原因
INSERT/UPDATE 引用了不存在的父键、数据加载顺序错误(先加载子行),或父行已被删除。
解决方法
先插入父行,再插入子行。确认被引用的值存在:SELECT * FROM parent_table WHERE key_column = value。批量加载时保持父-子顺序。仅在受控的维护操作中使用 SET FOREIGN_KEY_CHECKS=0,完成后将其恢复为 1。
同一数据库的其他条目
- 1114The table is full(表已满)
- 1215Cannot add foreign key constraint(无法添加外键约束)
- 1451Cannot delete or update a parent row: a foreign key constraint fails(无法删除或更新父行:外键约束失败)
- 1366Incorrect string/integer value for column(列的字符串/整数值不正确)
- 1044Access denied for user to database(用户对数据库的访问被拒绝)
- 1264Out of range value for column(列的值超出范围)
- 1052Column 'x' in field list is ambiguous(字段列表中的列 'x' 不明确)