【发布时间】:2017-05-18 16:47:36
【问题描述】:
为什么我不能在note 中添加外键组?
我收到Error Code: 1215. Cannot add foreign key constraint。
create table student(
id_student int auto_increment not null,
prenume varchar(255) not null,
nume varchar(255) not null,
constraint id_student_pk_STUDENT primary key(id_student));
create table materie(
id_materie int auto_increment not null,
nume_materie varchar(255) not null,
constraint id_materie_pk_MATERIE primary key(id_materie));
create table inscris(
id_student int not null,
id_materie int not null,
constraint id_student_fk_INSCRIS foreign key(id_student) references student(id_student),
constraint id_materie_fk_INSCRIS foreign key(id_materie) references materie(id_materie));
create table note(
id_student int not null,
id_materie int not null,
nota int,
constraint fk_id_student_materie_NOTE foreign key(id_student, id_materie) references inscris(id_student, id_materie));
show engine innodb status 是这么说的:
最新的外键错误\n------------------------\n2017-05-18 19:44:21 0x700007362000 错误表目录/注释的外键约束:\n 外键(id_student, id_materie) 引用 inscris(id_student, id_materie)):\n在引用的表中找不到索引,其中\n引用的列显示为第一列或列类型\n 表和被引用的表不匹配约束。\n请注意,在使用 >= InnoDB-4.1.12 创建的表中,ENUM 和 SET 的内部存储类型发生了变化,旧表中的此类列\n不能被新表中的此类列。\n请参阅http://dev.mysql.com/doc/refman/5.7/en/innodb-foreign-key-constraints.html 以获得正确的外键定义。
【问题讨论】:
-
外键必须引用一个键,您需要在
inscris中添加一个索引,其中包括note的FK 中引用的两个字段。其他 FK 工作不是因为它们是单列,而是因为引用的列被索引了。 -
@Uueerdo 谢谢!做到了。
标签: mysql foreign-keys foreign-key-relationship