【问题标题】:Why can't i add a foreign key formed of two columns?为什么我不能添加由两列组成的外键?
【发布时间】: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


【解决方案1】:

外键必须引用一个键,你需要在 inscris 中添加一个索引,其中包括 note 的 FK 中引用的两个字段。其他 FK 的工作不是因为它们是单列,而是因为引用的列是索引的。

【讨论】:

    【解决方案2】:

    也许这个替代方案会绕过你的问题。在inscris 表中添加第三列,并将第三列设为主键。然后将您的 note 外键引用到该主键列。

    【讨论】:

      猜你喜欢
      • 2021-06-09
      • 1970-01-01
      • 1970-01-01
      • 2020-05-07
      • 1970-01-01
      • 1970-01-01
      • 2023-02-25
      • 2016-01-13
      • 1970-01-01
      相关资源
      最近更新 更多