表中不存在键列

问题描述 投票:0回答:2

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

首先我创建了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表中时。

mysql sql database foreign-keys
2个回答
2
投票

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

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


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

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

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.