Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 在只引用一个表的表中设置多个外键时出现问题_Mysql_Foreign Keys - Fatal编程技术网

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)