MySQL 外键约束错误: '没有与外键匹配的主键或候选键' 解决方法
MySQL 外键约束错误: '没有与外键匹配的主键或候选键' 解决方法
在创建外键约束时,可能会遇到以下错误消息:
消息 1776,级别 16,状态 0,第 1 行
在被引用表 'stu_info' 中没有与外键 'fk_stu_id' 中的引用列列表匹配的主键或候选键。
消息 1750,级别 16,状态 1,第 1 行
无法创建约束或索引。请参阅前面的错误。
这个错误是因为在创建外键约束时,引用的表('stu_info')没有一个可以匹配的主键或候选键。所以需要在'stu_info'表中添加一个主键或候选键,然后将外键约束指向该键。具体操作如下:
- 在'stu_info'表中添加一个主键或候选键。例如,可以添加一个名为'id'的主键列。
ALTER TABLE stu_info ADD id INT PRIMARY KEY IDENTITY(1,1);
- 在创建'stu_grade'表时,将外键约束指向新添加的主键或候选键。
CREATE TABLE stu_grade(
stu_id INT CONSTRAINT fk_stu_id FOREIGN KEY REFERENCES stu_info(id),
course_id char(3) NOT NULL,
grade int,
CONSTRAINT pk_stu_course PRIMARY KEY(stu_id,course_id)
);
这样就可以成功创建外键约束了。注意,修改表结构可能会影响已有数据,所以在进行修改前请备份数据。
原文地址: https://www.cveoy.top/t/topic/nWuq 著作权归作者所有。请勿转载和采集!