我有3个表,它们都有innodb引擎:
video(url, title, desc, country,...) url -> primary key
videoCat(_url, category) {_url,category} -> primary key
favorite(fav_url, thumb_path) fav_url -> primary key
然后我这样做:
alter table favorite
add foreign key(fav_url) references video(url)
on delete cascade
一切都很顺利,但是当我尝试时:
alter table videoCat
add foreign key(_url) references video(url)
on delete cascade
I get:
1452 - 无法添加或更新子行:外键约束失败(bascelik_lookaroundyou
.,约束#sql-efa_1a6e91a_ibfk_1
外键(_url
) 参考video
(url
) 删除级联时)
why???
附注我正在使用 phpmyadmin 版本。 3.3.9.2
表 videoCat 有一行或多行违反了外键约束。这通常是因为您有一行 _url 值在表视频中不存在。
您可以使用以下查询来检查这一点:
SELECT videoCat._url
FROM videoCat LEFT JOIN video ON videoCat._url = video.url
WHERE video.url IS NULL
EDIT
根据请求,这是一个删除这些讨厌的行的查询:
DELETE FROM videoCat
WHERE NOT EXISTS (
SELECT *
FROM video
WHERE url = videoCat._url
)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)