Mysql 无法将外键添加到exists表
我无法将外键添加到exists表中。我想从表Mysql 无法将外键添加到exists表,mysql,sql,foreign-keys,Mysql,Sql,Foreign Keys,我无法将外键添加到exists表中。我想从表games到publisher(publisher\u id)的引用中添加外键publisher\u id) 但是当运行下面的sql时,它会说: 源列和目标列必须具有相同的数据类型,目标列上必须有索引,并且引用的数据必须存在。 无法添加或更新子行:外键约束失败(vngarena.com#sql-818_1b1,约束#sql-818_1b1_ibfk_2外键(publisher_id)在更新级联时删除级联引用publisher(publisher_id)
games
到publisher
(publisher\u id
)的引用中添加外键publisher\u id
)
但是当运行下面的sql时,它会说:
源列和目标列必须具有相同的数据类型,目标列上必须有索引,并且引用的数据必须存在。
无法添加或更新子行:外键约束失败(vngarena.com
#sql-818_1b1
,约束#sql-818_1b1_ibfk_2
外键(publisher_id
)在更新级联时删除级联引用publisher
(publisher_id
)
sql是:
更改表格游戏
在更新级联的删除级联上添加外键(
publisher\u id
)引用publisher
(publisher\u id
)
下面是我的数据库的示意图:
更多信息:-表
games
有两条记录-表
games
有其他外键,它引用表gamecat
(gamecat\u id
)-表
gamecats
有两条记录-表
发布者
没有记录如果存在任何违反关系的现有数据,则需要在添加密钥之前对其进行清理
[编辑]
编辑后:Table games中的发布者id正在publishers表中查找匹配项。请添加一个id与games表中的内容匹配的发布者。如果存在任何违反此关系的现有数据,则需要在添加密钥之前对其进行清理 [编辑]
编辑后:Table games中的发布者id正在publishers表中查找匹配项。请添加id与games表中的内容匹配的发布者。在添加外键之前,您需要删除游戏表记录 如果您添加外键,它应该与现有数据匹配。在您的情况下,发布者表没有记录。因此,如果您在游戏表中添加带有记录的数据,它将失败
or
您应该在publishers表中添加两条记录,其中games表中存在相同的键
有关更多详细信息,请参阅下面的链接
在添加外键之前,您需要删除游戏表记录 如果您添加外键,它应该与现有数据匹配。在您的情况下,发布者表没有记录。因此,如果您在游戏表中添加带有记录的数据,它将失败
or
您应该在publishers表中添加两条记录,其中games表中存在相同的键
有关更多详细信息,请参阅下面的链接
表
游戏中的那两条记录在发布者id
列中是否有任何值?表游戏中的那两条记录在发布者id
列中是否有任何值?是的,因为表游戏中发布者id
列的默认值为0,而表发布者
没有任何记录可与子记录匹配。因此,当向游戏添加外键时,它失败了。我必须向表发布者
插入一条记录,然后将其主记录更新为0,然后将外键添加到表游戏
,成功了!非常感谢。是的,因为默认的v表games
中列publisher\u id
的值为0,表publisher
没有任何记录可与子记录匹配。因此,在将外键publisher\u id
添加到games
时失败。我必须将一条记录插入表publisher
中,然后将其主记录更新为0,然后添加foreign键到tablegames
,它成功了!非常感谢。是的,我不想删除我的数据,所以我有一个解决方案发布在上面的评论中。@NguyễnTrọngBằng.Ya两种方法都正确。如果您不需要删除,您应该在publisher-id表中添加匹配的publisher\u-id记录。是的,我不想删除我的数据,所以我有一个解决方案发布在上面的注释中。@NguyễnTrọngBằng.Ya双向正确。如果不需要删除,则应在publisher id表中添加匹配的publisher_id记录。。