【问题标题】:Key column doesn't exist in table表中不存在键列
【发布时间】:2017-12-31 06:27:45
【问题描述】:

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

首先我创建了 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,
);

那么我希望 quizzes 表有一个引用第一个表中的 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)
);

这是抛出错误:'Key column 'user_id' doesn't exist in table.

其他答案建议检查 DB 是否是 InnoDB,我确实这样做了。

不明白为什么它告诉我 user_id 不存在,而它显然存在于 users 表中。

【问题讨论】:

    标签: mysql sql database foreign-keys


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢,它现在可以工作了。我没有意识到您需要在将其声明为外键之前创建该列。以为它是自动完成的 :) 非常感谢
    【解决方案2】:
    • 首先:您不需要在第一个 CREATE 语句中使用最后一个逗号 - ,。 -
    • 第二:您必须先创建列,然后才能在外键约束中使用它们,并且在创建约束时第二个表中不存在 user_id。

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

    【讨论】:

    • 别担心,这发生在我们最好的人身上;)
    猜你喜欢
    • 2019-04-05
    • 2023-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-27
    • 2013-10-12
    • 2015-03-09
    • 2016-05-11
    相关资源
    最近更新 更多