[英]Why can't i add a foreign key formed of two columns?
為什么不能在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表目錄的外鍵約束錯誤/ note:\\ n外鍵(id_student,id_materie)引用inscris(id_student,id_materie)):\\ n在引用表中找不到索引,在該表中\\ n被引用的列顯示為第一列,或者列類型\\在表和\\ n請注意,在使用> = InnoDB-4.1.12創建的n表中,ENUM和SET的內部存儲類型已更改,並且舊表中的此類列\\ n不能被新表中的此類列引用。 \\ n有關正確的外鍵定義,請參考http://dev.mysql.com/doc/refman/5.7/en/innodb-foreign-key-constraints.html 。
外鍵必須引用一個鍵,您需要在inscris中添加一個索引,其中包括在筆記的FK中引用的兩個字段。 其他FK的工作不是因為它們是單列,而是因為所引用的列已建立索引。
也許這種選擇會繞過您的問題。 在您的inscris
表中添加第三列,並將該第三列作為主鍵。 然后將您的note
外鍵指向該主鍵列。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.