簡體   English   中英

alter table add外鍵失敗

[英]alter table add foreign key fails

我有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

我明白了:

1452 - 無法添加或更新子行:外鍵約束失敗( bascelik_lookaroundyou 。<結果2解釋文件名'#sql-efa_1a6e91a'>時,CONSTRAINT #sql-efa_1a6e91a_ibfk_1 FOREIGN KEY( _url )REFERENCES videourl )ON DELETE CASCADE )

為什么???

ps我正在使用phpmyadmin ver。 3.3.9.2

表videoCat有一行或多行違反外鍵約束。 通常情況下,您有一個行,其中_url的值在表視頻中不存在。

您可以使用以下查詢檢查:

SELECT videoCat._url
FROM videoCat LEFT JOIN video ON videoCat._url = video.url
WHERE video.url IS NULL

編輯

每個請求,這是一個刪除那些討厭的行的查詢:

DELETE FROM videoCat
WHERE NOT EXISTS (
    SELECT *
    FROM video
    WHERE url = videoCat._url
)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM