表中不存在键列
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了表中不存在键列相关的知识,希望对你有一定的参考价值。
我在添加引用另一个表的外键字段时遇到问题。
首先我创建了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表中时。
答案
首先检查表user
是否成功创建,因为最后一列有额外的','!
其次,您在FOREIGN KEY(user_id)
中引用的列未在表quizzes
中定义,您需要在quizzes
表中添加此列。
另一答案
- 第一:你不需要第一个CREATE语句中的最后一个逗号 -
,
。 - - 第二:必须先创建列,然后才能在外键约束中使用它们,并且在创建约束时第二个表中不存在user_id。
看看下面的例子。在创建约束之前添加user_id列时,最后一次创建成功:
以上是关于表中不存在键列的主要内容,如果未能解决你的问题,请参考以下文章