【问题标题】:ERROR 1452: 1452: Cannot add or update a child row: a foreign key constraint fails错误 1452:1452:无法添加或更新子行:外键约束失败
【发布时间】:2013-12-07 21:10:15
【问题描述】:

我正在尝试创建一个简单的数据库,但是当我尝试将数据添加到任一歌曲表专辑时,我会收到此错误。

错误 1452: 1452: 无法添加或更新子行:外键约束失败 (newschema.songs, CONSTRAINT fk_Songs_Albums1 FOREIGN KEY (Albums_AlbumId) REFERENCES Albums (AlbumId) ON DELETE NO ACTION ON UPDATE NO ACTION) SQL 语句: 插入newschema.Songs (SongTitle) 值('Song1')

我不确定结构是否正确!但我非常渴望得到这个工作! 任何帮助将不胜感激。

谢谢

【问题讨论】:

    标签: mysql sql workbench


    【解决方案1】:

    您正在使用此查询

    INSERT INTO newschema.Songs (SongTitle) VALUES ('Song1')
    

    因此,您插入了一首新歌,而没有提及任何专辑。根据您的架构不起作用。每首歌都必须属于一张专辑。

    所以至少应该是这样的

    INSERT INTO newschema.Songs (SongTitle, Albums_AlbumId) 
    VALUES ('Song1', 1)
    

    如果您希望此类引用成为可选,您必须在此类列中允许 NULL。

    【讨论】:

    • 好的。所以我尝试添加相册和.. 错误 1452:1452:无法添加或更新子行:外键约束失败(newschema.albums,CONSTRAINT fk_Albums_Musicians1 FOREIGN KEY(Musicians_MusicianId)参考@987654327 @ (MusicianId) ON DELETE NO ACTION ON UPDATE NO ACTION) SQL 语句:INSERT INTO newschema.Albums (AlbumTitle, Musicians_MusicianId) VALUES ('Album1', '1')
    • 另外,我该如何更改它,以使歌曲不必属于专辑?
    • 与专辑表相同。没有音乐家就没有专辑。
    • 扩展一点这个答案,外键关系意味着您的关联字段必须至少具有外部表中相关字段的值之一。
    • @user3075549:更改所有应选择填充的列以允许空值:您当前将它们定义为NOT NULL(删除NOT
    猜你喜欢
    • 2014-05-10
    • 2013-05-11
    • 2013-09-28
    • 1970-01-01
    • 2015-02-04
    • 2013-06-11
    • 2019-03-29
    • 2018-05-14
    • 2013-05-03
    相关资源
    最近更新 更多