无法在sql中添加foregin密钥

时间:2017-09-20 09:58:14

标签: mysql

我想在表中添加一个外键约束,我收到此错误消息:

  

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)

1 个答案:

答案 0 :(得分:3)

这是因为表gt_sub中有category_id的行在另一个表gt_main中不存在。

创建您尝试添加的外键是为了防止插入这些类型的行,这就是无法创建外键的原因。

您可以查询这些行,然后将其删除以解决问题:

SELECT *
FROM gt_sub
WHERE package_category_id NOT IN(SELECT category_id from gt_main)