SQL 错误 1776 和 1750:外键约束创建失败 - 解决方法
在创建 stu_grade 表时,遇到了以下错误:
CREATE TABLE stu_grade(
stu_id char(10) CONSTRAINT fk_stu_id FOREIGN KEY REFERENCES stu_info(stu_id),
course_id char(3) NOT NULL,
grade int,
CONSTRAINT pk_stu_course PRIMARY KEY(stu_id,course_id)
);
消息 1776,级别 16,状态 0,第 1 行 在被引用表 'stu_info' 中没有与外键 'fk_stu_id' 中的引用列列表匹配的主键或候选键。
消息 1750,级别 16,状态 1,第 1 行 无法创建约束或索引。请参阅前面的错误。
错误原因:
该错误提示表明在创建 stu_grade 表时,定义了一个外键 fk_stu_id,引用了 stu_info 表的 stu_id 列作为关联列,但是 stu_info 表中没有 stu_id 列或 stu_id 列不是主键或候选键。
解决方法:
-
确保
stu_info表中存在stu_id列,并且stu_id列是主键或候选键。 -
检查定义外键时引用列的数据类型是否与被引用列的数据类型相同或者是被引用列数据类型的精度和规模的子集。
-
如果数据类型不匹配,需要修改定义外键时引用列的数据类型,使其与被引用列的数据类型相同或者是被引用列数据类型的精度和规模的子集。
-
修改完毕后重新执行创建表的语句,即可成功创建
stu_grade表。
示例:
假设 stu_info 表中存在 stu_id 列,并且是主键,但数据类型为 varchar(10),而 stu_grade 表中的 stu_id 列定义为 char(10),那么需要修改 stu_grade 表中的 stu_id 列数据类型为 varchar(10),如下所示:
CREATE TABLE stu_grade(
stu_id varchar(10) CONSTRAINT fk_stu_id FOREIGN KEY REFERENCES stu_info(stu_id),
course_id char(3) NOT NULL,
grade int,
CONSTRAINT pk_stu_course PRIMARY KEY(stu_id,course_id)
);
总结:
错误 1776 和 1750 通常是由于外键约束的定义与被引用表中的列结构不匹配导致的。通过确保被引用表存在对应的列且数据类型匹配,可以顺利创建外键约束。
原文地址: https://www.cveoy.top/t/topic/nWtQ 著作权归作者所有。请勿转载和采集!