无法创建多对多表

无法创建多对多表

我已经设置了3张桌子。一种是成分。另一个用于膳食,最后一个用于两者之间的接合点参考。但是,每次我尝试为“ meal_fk”设置外键时,都不会得到定义的索引错误,即使据我所知,它已被索引,或者我将其属性设置为indexed。那我在做什么错?

mysql - mysqli:无法创建多对多表?-LMLPHP

mysql - mysqli:无法创建多对多表?-LMLPHP

mysql - mysqli:无法创建多对多表?-LMLPHP

编辑:餐表

mysql - mysqli:无法创建多对多表?-LMLPHP

配料

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/

10-13 06:45