MySQL 外键约束错误: '没有与外键匹配的主键或候选键' 解决方法

在创建外键约束时,可能会遇到以下错误消息:

消息 1776,级别 16,状态 0,第 1 行
在被引用表 'stu_info' 中没有与外键 'fk_stu_id' 中的引用列列表匹配的主键或候选键。
消息 1750,级别 16,状态 1,第 1 行
无法创建约束或索引。请参阅前面的错误。

这个错误是因为在创建外键约束时,引用的表('stu_info')没有一个可以匹配的主键或候选键。所以需要在'stu_info'表中添加一个主键或候选键,然后将外键约束指向该键。具体操作如下:

  1. 在'stu_info'表中添加一个主键或候选键。例如,可以添加一个名为'id'的主键列。
ALTER TABLE stu_info ADD id INT PRIMARY KEY IDENTITY(1,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)
);

这样就可以成功创建外键约束了。注意,修改表结构可能会影响已有数据,所以在进行修改前请备份数据。

MySQL 外键约束错误: '没有与外键匹配的主键或候选键' 解决方法

原文地址: https://www.cveoy.top/t/topic/nWuq 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录