【问题标题】:SQL syntax error; "check the manual that corresponds to your MariaDB server version for the right syntax to use near 'Order INT NOT NULL' [duplicate]SQL 语法错误; “检查与您的 MariaDB 服务器版本相对应的手册,以了解在 'Order INT NOT NULL' 附近使用的正确语法 [重复]
【发布时间】:2022-01-20 17:53:25
【问题描述】:

我正在使用 MariaDB 和 MySQL,我正在尝试使用命令提示符创建一个表,但我遇到了语法错误,我不确定出了什么问题。以下是错误:

You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'Order     INT NOT NULL,
        FName   VARCHAR(255),
        LName   VARCHAR(255),
        PhoneNum        VARCH...' at line 3

这是我所拥有的:

CREATE DATABASE projecttestDB;
USE projecttestDB;

DROP TABLE IF EXISTS Staff;

CREATE TABLE Staff (
    Year    INT NOT NULL,
    Order   INT NOT NULL,
    FName   VARCHAR(255),
    LName   VARCHAR(255),
    PhoneNum    VARCHAR(255),
    Salary  INT, 
    CHECK(Salary>=0),
    PRIMARY KEY (Year, Order)
);

【问题讨论】:

  • 不要使用Order作为列名,它是关键字。

标签: mysql sql mariadb syntax-error create-table


【解决方案1】:

order 是 SQL 中的保留字。如果您绝对必须使用它,您可以使用反引号转义列名:

CREATE TABLE Staff (
    Year    INT NOT NULL,
    `Order` INT NOT NULL, -- Here!
    FName   VARCHAR(255),
    LName   VARCHAR(255),
    PhoneNum    VARCHAR(255),
    Salary  INT, 
    CHECK(Salary>=0),
    PRIMARY KEY (Year, `Order`) -- And here
);

但最好将其重命名为非保留字,例如order_num

CREATE TABLE Staff (
    Year    INT NOT NULL,
    Order_Num INT NOT NULL,
    FName   VARCHAR(255),
    LName   VARCHAR(255),
    PhoneNum    VARCHAR(255),
    Salary  INT, 
    CHECK(Salary>=0),
    PRIMARY KEY (Year, Order_Num)
);

【讨论】:

    【解决方案2】:

    Order 是系统关键词。如果您将其更改为其他内容,它将起作用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-08
      • 1970-01-01
      • 1970-01-01
      • 2017-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多