我试图创建一个新的表关系,但我似乎遇到了一个错误,我不知道为什么。我做的第一个关系(一对多)是上周,它运作良好,也许我忘了正确的程序?
简单说明: 我有三张桌子 - 活动,音乐风格,场地
到目前为止,我正确地将事件和场所联系起来,就像一个场地可以有多个与之相关的事件。我尝试制作一个新表,其中包含每个音乐风格的行和一个将在表'事件'中使用的ID,以便我可以将每个事件链接到音乐风格ID。
然而,这是我得到的错误:
SQL查询:
ALTER TABLE
events
ADD FOREIGN KEY(MUSIC_STYLE_ID
)REFERENCESnightl7_complete
。music_styles
(MUSIC_ID
)ON DELETE NO ACTION ON UPDATE NO ACTION;MySQL说:文档
1452 - 无法添加或更新子行:外键约束
失败(
nightl7_complete/#sql-2721_c0dcfd
,CONSTRAINT#sql-2721_c0dcfd_ibfk_2
FOREIGN KEY(MUSIC_STYLE_ID
)参考music_styles
(MUSIC_ID
)ON更新没有动作更新无动作) 文档错误ALTER TABLEevents
添加外键(MUSIC_STYLE_ID
)参考nightl7_complete
。music_styles
(MUSIC_ID
)在更新时不执行任何操作;
这是我做的程序:)
I uploaded a full sized image here
谢谢大家:)
编辑:
所以我这样做了:
$query = 'SELECT e.* FROM events e '.
'LEFT JOIN nightl7_complete.music_styles ms ON ms.ID = e.MUSIC_STYLE_ID'.
'WHERE ms.id IS NULL';
$result = mysql_query($query);
if (!$result) {
die('Invalid query: ' . mysql_error());
}
得到了这个:
查询无效:您的SQL语法出错;检查与MySQL服务器版本对应的手册,以便在第1行的“ms.id IS NULL”附近使用正确的语法
答案 0 :(得分:2)
您不想将MUSIC_STYLE_ID
与ID
联系起来,而不是MUSIC_ID
吗?
此外,您需要使用MUSIC_STYLE_ID
中的有效ID预先填充music_styles
,或者在创建外键之前将它们设置为null。
要验证这一点,请尝试:
SELECT e.*
FROM events e
LEFT JOIN nightl7_complete.music_styles ms ON ms.ID = e.MUSIC_STYLE_ID
WHERE ms.id IS NULL;
如果该查询返回任何记录,则events
中的条目不包含music_styles
中的相应记录