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



编辑:餐桌

配料
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饭菜
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结合点配料套餐
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发布于 2017-01-20 07:00:05
啊,我明白了,引用的字段需要和引用的字段是完全相同的类型(除非它们可能是空的,即使引用的字段不是)。您的问题是引用的字段是unsigned int,而引用的字段是int。
https://stackoverflow.com/questions/41752037
复制相似问题