我正在使用mysql,当我尝试制作一个外键,该外键引用删除时级联的同一张表的主键时,会给出错误消息
“ 操作失败:将SQL脚本应用于数据库时出错。
错误1452:无法添加或更新子行:外键约束失败(logault_final
。#sql-10f0_17
,CONSTRAINT parent_category
外键(parent_cat
)参考category
(cat_id
)删除级联上)”
我确实找到了一个hack,但是很多人强调不要这样做,我可以将foreign_key_check = 0设置为“ 1”,然后将其设置回1,然后执行sql脚本。
ALTER TABLE `logault_final`.`category`
ADD CONSTRAINT `parent_category`
FOREIGN KEY (`parent_cat`)
REFERENCES `logault_final`.`category` (`cat_id`)
ON DELETE CASCADE
ON UPDATE NO ACTION;
'''
答案 0 :(得分:0)
仅凭猜测:您已经在表中添加了外键定义的数据了吗?也许在您的字段parent_cat中有无效引用的记录?在建立FK之前,您必须更正这些引用。
只需尝试查找无效记录:
select a.*
from logault_final.category a
left join logault_final.category b on (a.parent_cat = b.cat_id)
where (b.cat_id is null)
and (a.parent_cat is not null)