关键列不存在于表中

时间:2017-12-31 06:27:46

标签: mysql sql database foreign-keys

我在添加引用另一个表的外键字段时遇到问题。

首先我创建了users表:

CREATE TABLE users (
user_id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
userName VARCHAR(256) NOT NULL,
userEmail VARCHAR (256) NOT NULL,
userPwd VARCHAR(256) NOT NULL,
);

然后我想让测验表有一个引用第一个表中的user_id的外键

CREATE TABLE quizzes (
quizId INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
quizName VARCHAR(128) NOT NULL,
quizMax SMALLINT(6) NOT NULL,
FOREIGN KEY (user_id) REFERENCES users (user_id)
);

这会引发错误:'键列' user_id'表中没有。

建议其他答案检查数据库是InnoDB,我做过,而且确实如此。

无法理解为什么它告诉我user_id不存在,当它显然存在于users表中时。

2 个答案:

答案 0 :(得分:2)

首先检查表user是否已成功创建,因为最后一列上有额外的','!

其次,您在FOREIGN KEY(user_id)中提到的列未在表quizzes中定义,您需要在quizzes表中添加此列。

答案 1 :(得分:1)

  • 首先:您不需要第一个CREATE语句中的最后一个逗号 - ,。 -
  • 第二:您必须先创建列,然后才能在外键约束中使用它们,并且在创建约束时第二个表中不存在user_id。

看一下下面的例子。在创建约束之前添加user_id列时,最后一次创建成功:

enter image description here