我已经设置了3张桌子。一种是成分。另一个用于膳食,最后一个用于两者之间的接合点参考。但是,每次我尝试为“ 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
最佳答案
嗯,我知道,引用字段必须与引用的字段具有完全相同的类型(除非即使引用的字段不是空的,它们也可以为空)。您的问题是您引用的字段是unsigned int
,而您引用的字段是int
。
关于mysql - mysqli:无法创建多对多表?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41752037/