在一个只引用一个表

时间:2016-12-29 20:57:06

标签: mysql foreign-keys

我正在创建一个必须管理食品配送公司(学校项目)订单的数据库。我创建了一个菜单表,自然要包含几个菜(开胃菜,主菜和沙漠),我还有一个餐桌。所以菜单必须包含三个引用菜谱表主键的foreign keys。但是每次我尝试执行脚本时都会因外键约束而出错 这是表格的代码(对不起,但是将代码插入案例时存在问题)

create table plat(
    id_plat integer primary key,
    gluten boolean,
    végétarien boolean,
    nom varchar(30),
    catégorie varchar(30)  
);

create table menu(
    id_menu integer primary,
    entrée integer,
    plat integer,
    dessert integer,
    foreign key(entrée) references plat(id_menu),
    foreign key(plat) references plat(id_menu),
    foreign key(dessert) references plat(id_menu)
);

使用show ENGINE INNODB STATUS执行代码后,我收到此错误:

  

2016-12-29 21:42:58 7f2116e5c700表PROJET /菜单的外键约束出错:   引用表中没有包含索引的索引   列作为第一列,或者是数据类型   引用表与表中的表不匹配。

     

约束:     CONSTRAINT“menu_ibfk_1”FOREIGN KEY(“entrée”)REFERENCES“plat”(“id_menu”)

     

表中外键中的索引是“entrée”   见http://dev.mysql.com/doc/refman/5.6/en/innodb-foreign-key-constraints.html   正确的外键定义。

1 个答案:

答案 0 :(得分:0)

您的外键定义不正确,您尝试将entree表中的menu字段与id_menu表中的plat字段相关联。试试这个:

foreign key(entrée) references plat(id_plat)

Official docs