2017-01-19 57 views
0

我已經安裝了3個表格。一個是配料。另一個用於Meals,最後一個用於兩者之間的連接點。然而,每次我嘗試爲「meal_fk」設置一個外鍵時,我都沒有定義索引錯誤,儘管據我所知,它被索引,或者我將它的屬性設置爲索引。那麼我做錯了什麼?mysqli:無法創建MANY到MANY表嗎?

enter image description here

enter image description here

enter image description here

編輯:膳食表

enter image description here

成分

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 

MEALS

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 

JUNCTION成分膳食

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 
+0

因此,我沒有看到MEALS表的圖像......它說的索引不存在(我正在尋找餐桌的PK),因爲您爲雜貨店提供的屏幕截圖沒有「 t顯示我可以看到的表的PK或索引... – xQbert

+0

而不是圖像,將SHOW CREATE TABLE tablename的輸出顯示爲純文本。 – Barmar

+0

我在餐桌上添加了。 Barmar:對不起,我是用PHP學習mysqli的新手。這對我來說是第二天。我不明白你的意思是通過show create table tablename。 – Shawn

回答

0

啊,我明白了,引用字段必須是完全相同的類型引用的字段(除非他們可能是爲空的,即使引用的字段是不)。你的問題是你引用的字段是unsigned int,你引用的字段是int