首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysqli:无法创建多对多表?

问mysqli:无法创建多对多表?
EN

Stack Overflow用户
提问于 2017-01-20 05:30:00
回答 1查看 41关注 0票数 0

我有3张桌子。一个是配料。另一个用于Meals,最后一个用于两者之间的交叉点参考。但是,每次我尝试为"meal_fk“设置一个外键时,我没有得到定义的索引错误,即使据我所知,它是已索引的,或者我将其属性设置为indexed。那么我到底做错了什么呢?

​

​

​

​

​

​

编辑:餐桌

​

​

配料

代码语言:javascript
复制
Table   Create Table    
ingredients     CREATE TABLE `ingredients` (
 `ingredient_id` int(6) unsigned NOT NULL AUTO_INCREMENT,
 `quanity` int(6) NOT NULL,
 `package` int(6) NOT NULL,
 `item` varchar(50) DEFAULT NULL,
 `cost` decimal(18,2) DEFAULT NULL,
 `store` varchar(50) DEFAULT NULL,
 `reg_date` timestamp NULL DEFAULT NULL,
 PRIMARY KEY (`ingredient_id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4

饭菜

代码语言:javascript
复制
Table   Create Table    
meals   CREATE TABLE `meals` (
 `meal_id` int(6) unsigned NOT NULL AUTO_INCREMENT,
 `ingredients` int(6) NOT NULL,
 `meal` varchar(50) NOT NULL,
 `cost` decimal(18,2) DEFAULT NULL,
 `reg_date` timestamp NULL DEFAULT NULL,
 PRIMARY KEY (`meal_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4

结合点配料套餐

代码语言:javascript
复制
Table   Create Table    
junction_ingredients_meals  CREATE TABLE `junction_ingredients_meals` (
 `junction_id` int(6) NOT NULL,
 `ingredient_fk` int(6) NOT NULL,
 `meal_fk` int(6) NOT NULL,
 PRIMARY KEY (`junction_id`),
 KEY `ingredient_fk` (`ingredient_fk`,`meal_fk`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
EN

回答 1

Stack Overflow用户

发布于 2017-01-20 07:00:05

啊,我明白了,引用的字段需要和引用的字段是完全相同的类型(除非它们可能是空的,即使引用的字段不是)。您的问题是引用的字段是unsigned int,而引用的字段是int。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41752037

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档