我想在表中添加一个外键约束,我收到此错误消息:
1452 - 无法添加或更新子行:外键约束 失败了。#sql-156c_26f,CONSTRAINT fk_gt_sub FOREIGN KEY (package_category_id)参考gt_main(category_id))
查询:
ALTER TABLE gt_sub ADD CONSTRAINT fk_gt_sub FOREIGN KEY (package_category_id) REFERENCES gt_main(category_id)
答案 0 :(得分:3)
这是因为表gt_sub
中有category_id
的行在另一个表gt_main
中不存在。
创建您尝试添加的外键是为了防止插入这些类型的行,这就是无法创建外键的原因。
您可以查询这些行,然后将其删除以解决问题:
SELECT *
FROM gt_sub
WHERE package_category_id NOT IN(SELECT category_id from gt_main)