MYSQL 错误 1064:似乎无法准确找到错误

MYSQL Error 1064: Can't seem to find the error exactly

你好,我是 SQL 的新手,一般来说是编码,我在我的代码中看到一个错误,我似乎无法弄清楚。

DROP TABLE IF EXISTS record, artist;

CREATE TABLE artist (
    id INT AUTO_INCREMENT,
    first_name VARCHAR(50),
    last_name VARCHAR(50),
    PRIMARY KEY (id)
);

CREATE TABLE record (
    id INT AUTO_INCREMENT,
    title VARCHAR(50),
    artist_id INT,
    genre TINYTEXT,
    year YEAR(4),
    price DECIMAL(10, 2) unsigned,
    PRIMARY KEY (id),
    FOREIGN KEY (artist_id)
            REFERENCES artist (id)
);

CREATE TABLE order (
    id INT AUTO_INCREMENT,
    record_id INT,
    quantity INT unsigned,
    total DECIMAL(10, 2) unsigned,
    PRIMARY KEY (id),
    FOREIGN KEY (record_id)
            REFERENCES record (id)
);

出现的错误是:
错误 1064 (42000):您的 SQL 语法有误;查看与您的 MySQL 服务器版本对应的手册,了解在 'order ( id INT AUTO_INCREMENT, record_id 智力, 数量 INT 无符号, 第 1 行的总 D'

我知道它告诉我错误的确切位置,我知道这是一个语法错误,但出于某种原因,我似乎无法理解错误的确切位置或内容。我试过添加 'order' 和 DROP TABLE IF EXISTS 但这只会带来更多错误。我知道这可能是很明显的事情,所以我很抱歉问这个问题,但我迷路了。

order是SQL中的保留字。您可以通过用正引号将其括起来来保护它:

CREATE TABLE `order` (
    id INT AUTO_INCREMENT,
    record_id INT,
    quantity INT unsigned,
    total DECIMAL(10, 2) unsigned,
    PRIMARY KEY (id),
    FOREIGN KEY (record_id)
            REFERENCES record (id)
);

或者更好的是,找到一个不是保留字的名称,例如 orders:

CREATE TABLE orders (
    id INT AUTO_INCREMENT,
    record_id INT,
    quantity INT unsigned,
    total DECIMAL(10, 2) unsigned,
    PRIMARY KEY (id),
    FOREIGN KEY (record_id)
            REFERENCES record (id)
);