表中不存在键列

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列时,最后一次创建成功:

enter image description here

以上是关于表中不存在键列的主要内容,如果未能解决你的问题,请参考以下文章

Django 迁移抛出 1072 - 表中不存在键列“car_make_id”

如何不选择其他表中不存在的行

配置警告中不存在此类片段

错误:表中不存在列(外键引用)

测试数据库中重复键的最佳方法

从一个表中选择 Laravel 5.1 中另一个表中不存在的所有记录