我在创建外键时遇到错误。错误为 1822,内容如下:
Error Code: 1822. Failed to add the foreign key constraint. Missing index for constraint 'Changes_ibfk_4' in the referenced table 'Recipe'
我读过类似的问题,问题似乎是,我们需要在其上创建外键的列与引用的列没有相同的数据类型。
但是,我不知道这两列有何不同。两者都是主键,具有相同的名称和类型 varchar(255)。下面是MySQL代码。
两个“版本”列之间有区别吗?或者问题是其他的?
alter table Recipe drop column version;
alter table Changes drop column version;
alter table Recipe add column version varchar(255);
alter table Changes add column version varchar(255);
alter table Recipe drop primary key, add primary key(recipeID, version);
alter table Changes drop primary key, add primary key(newRecipeID, version);
alter table Changes add foreign key(version) references Recipe(version);
最佳答案
在引用表中,必须有一个索引,其中外键列按相同顺序列为第一列 dev.mysql.com/doc/refman/5.6/en/create-table-foreign-keys。在您的示例中的 html 中,您在更改表的配方中没有这样的键更改添加外键(版本)引用配方(版本
关于mysql - 尝试创建外键时 MySQL 出现错误 1822,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56078681/