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

Mysql 错误:列不存在';表中不存在(外键引用),mysql,sql,sql-scripts,Mysql,Sql,Sql Scripts,问题 我正在尝试将Customer表中的ID列链接到Purchases表中的C_ID。我仍在学习SQL,所以我对SQL有一点了解,不知道为什么会发生这种错误。如果有人能提出一个解决方案,指出我的错误所在,那就太好了 错误消息 SQL代码 CREATE TABLE Customer ( ID INTEGER, Firstname VARCHAR (15), Lastname VARCHAR (15), Address VARCHAR (254), Postcode VARCHAR (8), E

问题
我正在尝试将Customer表中的ID列链接到Purchases表中的C_ID。我仍在学习SQL,所以我对SQL有一点了解,不知道为什么会发生这种错误。如果有人能提出一个解决方案,指出我的错误所在,那就太好了

错误消息

SQL代码

CREATE TABLE Customer (

ID INTEGER,
Firstname VARCHAR (15),
Lastname VARCHAR (15),
Address VARCHAR (254),
Postcode VARCHAR (8),
Email VARCHAR (254),
Phoneno INTEGER,
Points INTEGER,
PRIMARY KEY (ID)
);

CREATE TABLE Purchases (

C_ID INTEGER,
GameName VARCHAR(30),
ConsoleType VARCHAR (20),
Price VARCHAR (254),
PaymentType VARCHAR (20),
Date TIMESTAMP,
PointsGained INTEGER,
PRIMARY KEY (C_ID),
FOREIGN KEY (ID) REFERENCES Customer(ID)
);

我认为您将主键和外键列放错了位置,而且您没有添加Purchase table主键列

CREATE TABLE Purchases 
(
ID INTEGER, -- Primary key column 
C_ID INTEGER,
GameName VARCHAR(30),
ConsoleType VARCHAR (20),
Price VARCHAR (254),
PaymentType VARCHAR (20),
Date TIMESTAMP,
PointsGained INTEGER,
PRIMARY KEY (ID),
FOREIGN KEY (C_ID) -- Replace ID with C_ID
    REFERENCES Customer(ID)  
);

您的
Purchases
表中没有名为
ID
的列。
在我看来应该是这样的:

CREATE TABLE Purchases (
    ID INTEGER,
    C_ID INTEGER,
    GameName VARCHAR(30),
    ConsoleType VARCHAR (20),
    Price VARCHAR (254),
    PaymentType VARCHAR (20),
    Date TIMESTAMP,
    PointsGained INTEGER,
    PRIMARY KEY (ID),
    FOREIGN KEY (C_ID) REFERENCES Customer(ID)
);

因此,
ID
列是主键,
C\u ID
列是客户的外键。

比我快了一秒:-)@ZoharPeled-哈哈,我们两人也有类似的想法:PError消息有时非常具体。这就是其中之一。如果你想成为一名程序员,阅读和解释错误信息是你需要的技能。这本书是如此清晰和具体,以至于它暗示你可能根本没有读过它。话虽如此,有时信息是模糊的,但那是另一回事。