我有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
Run Code Online (Sandbox Code Playgroud)
然后我做:
alter table favorite
add foreign key(fav_url) references video(url)
on delete cascade
Run Code Online (Sandbox Code Playgroud)
一切顺利,但当我尝试:
alter table videoCat
add foreign key(_url) references video(url)
on delete cascade
Run Code Online (Sandbox Code Playgroud)
我明白了:
1452 - 无法添加或更新子行:外键约束失败(
bascelik_lookaroundyou.<结果2解释文件名'#sql-efa_1a6e91a'>,CONSTRAINT#sql-efa_1a6e91a_ibfk_1FOREIGN KEY(_url)REFERENCESvideo(url)ON DELETE CASCADE)
为什么???
ps我正在使用phpmyadmin ver.3.3.9.2
Ted*_*opp 39
表videoCat有一行或多行违反外键约束.通常情况下,您有一个具有_url值但在表视频中不存在的行.
您可以使用以下查询检查:
SELECT videoCat._url
FROM videoCat LEFT JOIN video ON videoCat._url = video.url
WHERE video.url IS NULL
Run Code Online (Sandbox Code Playgroud)
编辑
每个请求,这是一个删除那些讨厌的行的查询:
DELETE FROM videoCat
WHERE NOT EXISTS (
SELECT *
FROM video
WHERE url = videoCat._url
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
15086 次 |
| 最近记录: |