alter table add foreign key fails
I have 3 tables and they all have innodb engine:
video(url, title, desc, country,...) url -> primary key
videoCat(_url, category) {_url,category} -> primary key
favorite(fav_url, thumb_path) fav_url -> primary key
then I do:
alter table favorite
add foreign key(fav_url) references video(url)
on delete cascade
and everything goes smooth, but when I try:
alter table videoCat
add foreign key(_url) references video(url)
on delete cascade
I get:
1452 - Cannot add or update a child row: a foreign开发者_如何转开发 key constraint fails (
bascelik_lookaroundyou
.<result 2 when explaining filename '#sql-efa_1a6e91a'>, CONSTRAINT#sql-efa_1a6e91a_ibfk_1
FOREIGN KEY (_url
) REFERENCESvideo
(url
) ON DELETE CASCADE)
why???
p.s. I am using phpmyadmin ver. 3.3.9.2
The table videoCat has one or more rows that violates the foreign key constraint. This is usually that you have a row with a value for _url that does not exist in the table video.
You can check for this with the following query:
SELECT videoCat._url
FROM videoCat LEFT JOIN video ON videoCat._url = video.url
WHERE video.url IS NULL
EDIT
Per request, here's a query to delete those pesky rows:
DELETE FROM videoCat
WHERE NOT EXISTS (
SELECT *
FROM video
WHERE url = videoCat._url
)
精彩评论