我正在创建一个必须管理食品配送公司(学校项目)订单的数据库。我创建了一个菜单表,自然要包含几个菜(开胃菜,主菜和沙漠),我还有一个餐桌。所以菜单必须包含三个引用菜谱表主键的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 正确的外键定义。
答案 0 :(得分:0)
您的外键定义不正确,您尝试将entree
表中的menu
字段与id_menu
表中的plat
字段相关联。试试这个:
foreign key(entrée) references plat(id_plat)