MySQL INSERT 语法给出一个奇怪的错误

MySQL INSERT syntax giving a weird error

我在 MySQL 数据库中遇到了一个非常奇怪的问题。我正在尝试将一些值插入到我创建的 table 中,但遇到错误 1064。我已经更改了语法的每一部分。这是我在终端上输入的逐字记录:

mysql -u root -p
CREATE DATABASE robotics
USE robotics
CREATE TABLE `2017marea` (
    `Team` INT(25) NOT NULL, 
    `Match` INT(25) NOT NULL, 
    `Auto` INT(25) NOT NULL, 
    `Gear` INT(25) NOT NULL, 
    `Kpa` INT(25) NOT NULL, 
    `Climb` INT(25) NOT NULL
);
INSERT INTO 2017marea (Team, Match, Auto, Gear, Kpa, Climb) VALUES (1721, 1, 3, 5, 5, 1);

此时,MySQL会return给我报错:

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Match, Auto, Gear, Kpa, Climb) VALUES (1721, 1, 3, 5, 5, 1);

我知道这是语法错误。但是,更改我的值语法似乎根本不会影响错误,而且我所做的任何事情似乎都无法阻止错误。我已经尝试用我能想到的每种不同类型的引号或刻度来包围每个值,还有初始列。我很困惑,这里发生了什么?

谢谢。

Match 是 MySQL 中的保留关键字。您可以通过将其放在反引号中来解决该错误,例如

INSERT INTO 2017marea (Team, `Match`, Auto, Gear, Kpa, Climb)
VALUES (1721, 1, 3, 5, 5, 1);

我注意到,当您创建 table 时,您将 每个 列名称放在了反引号中。这使您当时看不到错误。如果你这样做了:

CREATE TABLE `2017marea` (
    Team INT(25) NOT NULL, 
    Match INT(25) NOT NULL, 
    Auto INT(25) NOT NULL, 
    Gear INT(25) NOT NULL, 
    Kpa INT(25) NOT NULL, 
    Climb INT(25) NOT NULL
);

你甚至在创建 table.

之前就会遇到错误

一般来说,您应该避免使用 MySQL 数据库保留关键字、table 和列名。

INSERT语句中的"Match"这个词应该放在``我觉得