“表中不存在键列”

时间:2015-03-31 23:44:53

标签: mysql

我在课堂上在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

1 个答案:

答案 0 :(得分:1)

您的表consoleID中没有字段games。您需要在尝试添加约束之前创建它。这将添加consoleID并创建约束:

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

您应该考虑添加第三个表格,将consolesgames相关联,因为有些游戏是多平台游戏。 :)