2015-03-31 110 views
0

我正在MySQL中創建一個數據庫,並且在向表中添加外鍵時遇到問題。在創建表格時,我已經將大部分外鍵添加到我的表格中,但顯然我無法將其全部添加到創建過程中。我試圖用下面的方法添加剩下的外鍵。「鍵列不存在於表中」

ALTER TABLE ORDERS 
ADD FOREIGN KEY (customer_sid) REFERENCES CUSTOMER(SID); 

由於某些原因,標題中列出的錯誤消息不斷彈出。代碼如下。我可以看到桌子有點滑稽,但是如果你從左到右閱讀它們,你可以看到它說的是什麼。你怎麼看?

mysql> show columns from games; 
+------------+-------------+------+-----+---------+----------------+ 
| Field  | Type  | Null | Key | Default | Extra   | 
+------------+-------------+------+-----+---------+----------------+ 
| gameID  | int(11)  | NO | PRI | NULL | auto_increment | 
| videoGames | varchar(30) | NO |  | NULL |    | 
| year  | int(11)  | NO |  | NULL |    | 
| genreID | int(11)  | NO | MUL | NULL |    | 
| companyID | int(11)  | NO | MUL | NULL |    | 
| directorID | int(11)  | NO | MUL | NULL |    | 
+------------+-------------+------+-----+---------+----------------+ 
6 rows in set (0.01 sec) 

mysql> show columns from consoles; 
+--------------+-------------+------+-----+---------+----------------+ 
| Field  | Type  | Null | Key | Default | Extra   | 
+--------------+-------------+------+-----+---------+----------------+ 
| consoleID | int(11)  | NO | PRI | NULL | auto_increment | 
| console  | varchar(20) | NO |  | NULL |    | 
| yearReleased | int(11)  | NO |  | NULL |    | 
+--------------+-------------+------+-----+---------+----------------+ 
3 rows in set (0.01 sec) 

mysql> alter table games 
    -> add foreign key(consoleID) references consoles(consoleID); 
ERROR 1072 (42000): Key column 'consoleID' doesn't exist in table 
+0

SHOW CREATE TABLE

會比顯示欄更有用 – 2015-03-31 23:47:34

回答

1

。在你的表games沒有現場consoleID。您需要在嘗試添加約束之前創建它。這將增加consoleID並創建約束:

ALTER TABLE games ADD COLUMN consoleID INTEGER NOT NULL; 
ALTER TABLE games ADD FOREIGN KEY (consoleID) REFERENCES consoles(consoleID); 

你應該考慮增加在那裏你因爲某些遊戲multiplateform consolesgames相關聯的第三表。 :)

+0

哦,非常感謝!哈哈其實我有一個計劃,我只是還沒有做到!再次感謝! – 2015-04-01 14:39:16

相關問題