Mysql 无法将外键添加到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)

我无法将外键添加到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

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键到table
games
,它成功了!非常感谢。是的,我不想删除我的数据,所以我有一个解决方案发布在上面的评论中。@NguyễnTrọngBằng.Ya两种方法都正确。如果您不需要删除,您应该在publisher-id表中添加匹配的publisher\u-id记录。是的,我不想删除我的数据,所以我有一个解决方案发布在上面的注释中。@NguyễnTrọngBằng.Ya双向正确。如果不需要删除,则应在publisher id表中添加匹配的publisher_id记录。。