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

时间:2017-03-14 15:51:52

标签: mysql mysql-error-1064

我在使用MySQL数据库时遇到了一个非常奇怪的问题。我正在尝试将一些值插入到我创建的表中但面临错误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会给我一个错误:

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);

我知道这是语法错误。但是,更改我的值语法似乎根本不会影响错误,而且我所做的一切似乎都没有停止错误。我试过围绕我能想到的每种不同类型的引号或刻度中的每个值,以及初始列。我很困惑,这里发生了什么?

感谢。

2 个答案:

答案 0 :(得分:3)

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

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

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

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
);

在创建表格之前,你会遇到错误。

通常,您应该避免对数据库,表和列名称使用MySQL保留关键字。

答案 1 :(得分:2)

INSERT语句中的“匹配”一词应放在“我认为

”中