Mysql 在只引用一个表的表中设置多个外键时出现问题
我正在创建一个数据库,用于管理食品配送公司的订单(用于学校项目)。我创建了一个菜单表,其中自然包含了几个菜(开胃菜、主菜和一个甜点),我还有一个菜表。因此,菜单必须包含三个参考菜谱主键的Mysql 在只引用一个表的表中设置多个外键时出现问题,mysql,foreign-keys,Mysql,Foreign Keys,我正在创建一个数据库,用于管理食品配送公司的订单(用于学校项目)。我创建了一个菜单表,其中自然包含了几个菜(开胃菜、主菜和一个甜点),我还有一个菜表。因此,菜单必须包含三个参考菜谱主键的外键。但每次尝试执行脚本时,由于外键约束,我都会遇到一个错误 下面是表的代码(抱歉,将代码插入到案例中会出现问题) 使用show ENGINE INNODB STATUS执行代码后,出现以下错误: 2016-12-29 21:42:58 7f2116e5c700表格项目/菜单外键约束错误: 引用表中没有包含的索引
外键。但每次尝试执行脚本时,由于外键约束,我都会遇到一个错误
下面是表的代码(抱歉,将代码插入到案例中会出现问题)
使用show ENGINE INNODB STATUS
执行代码后,出现以下错误:
2016-12-29 21:42:58 7f2116e5c700表格项目/菜单外键约束错误:
引用表中没有包含的索引
列作为第一列,或中的数据类型
引用的表与表中的表不匹配
约束条件:
约束“menu_ibfk_1”外键(“entrée”)引用“plat”(“id_menu”)
表中外键的索引是“entrée”
看见
获取正确的外键定义
您的外键定义不正确,您试图将菜单中的entre
字段链接到plat
表中的id\u菜单中的字段。试着这样做:
foreign key(entrée) references plat(id_plat)
如果我的外键与它引用的主键同名,可以吗?@AkramBendoukha您是指Fk本身的名称还是引用主键的字段的名称?(如果是前者,我通常会尽量避免显式命名这些键;但这可能没问题。如果是后者,通常情况下引用字段使用与引用pk字段相同的名称;这是否是良好的做法取决于情况,甚至是基于意见的。例如,在您的情况下,菜单
不能有3个r。)对plat
的引用,没有单独的字段,每个字段都有自己的名称。)
foreign key(entrée) references plat(id_plat)