什么会导致合法的MySql INSERT INTO命令失败?

什么会导致合法的MySql INSERT INTO命令失败?,sql,mysql,reserved-words,Sql,Mysql,Reserved Words,我不知道是什么原因导致我的INSERT INTO无法访问MySql中的某个表。我可以将它们管理到其他表中。该表如下所示: CREATE TABLE IF NOT EXISTS `Match` ( `id` int(11) NOT NULL AUTO_INCREMENT, `match_no` int(11) NOT NULL, `season` int(11) NOT NULL, `hometeam` int(11) NOT NULL, `awayteam` int(11)

我不知道是什么原因导致我的INSERT INTO无法访问MySql中的某个表。我可以将它们管理到其他表中。该表如下所示:

CREATE TABLE IF NOT EXISTS `Match` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `match_no` int(11) NOT NULL,
  `season` int(11) NOT NULL,
  `hometeam` int(11) NOT NULL,
  `awayteam` int(11) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `match_no` (`match_no`),
  KEY `season` (`season`),
  KEY `hometeam` (`hometeam`),
  KEY `awayteam` (`awayteam`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
命令是

INSERT INTO Match (`match_no`, `season`, `hometeam`, `awaytem`) VALUES (1, 1, 2, 3)
我得到的只是:

1064-您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以了解在第1行使用“匹配(
Match\u no
seasure
hometeam
awaytem
)值(1,1,2,3)”的正确语法


我已经检查了手册和网络上的半打示例,并尝试了各种语法更改,以防出现MySql特有的异常,但似乎没有任何效果。

Match
MySql
中是一个
保留的
单词

下面是MySQL保留字的用法

将匹配项括在后面的记号中,如下所示:

INSERT INTO `Match` .........

正如Pax指出的那样,您拼写错误了一个列名。

Match
MySQL
中的
保留词

下面是MySQL保留字的用法

将匹配项括在后面的记号中,如下所示:

INSERT INTO `Match` .........

同样正如帕克斯指出的,你错写了一个列名。

awaytem
改为
awaytem
,看看它是如何运行的,并使用“Match”作为表格:
Match
是一个保留字。

awaytem
改为
awaytem
,看看它是如何运行的,并使用“Match”作为表格:
Match
是一个保留字单词。

匹配是一个反向单词
所以

请注意用于字段名的相同反勾号

这些不是装饰用的

匹配是一个相反的词
所以

请注意用于字段名的相同反勾号

这些不是装饰用的

啊,awaytem只是我快速编写示例时的一个输入错误,但另一个提示是关键!所以非常感谢,真不敢相信我在这上面浪费了多少时间……顺便说一句:虽然您可以在MySQL(和其他DMB)中使用保留字作为表/列名,但我强烈建议您不要使用它。这将是未来的麻烦源,而且并非所有工具都支持必要的技巧(例如使用引号)。如果可以的话,请使用不同的表名。是的,我通常不使用它们,但这只是一个小应用程序,一旦我准备好,可能就再也不会使用它了。啊,awaytem只是我快速编写示例时的一个输入错误,但另一个提示就是关键!所以非常感谢,真不敢相信我在这上面浪费了多少时间……顺便说一句:虽然您可以在MySQL(和其他DMB)中使用保留字作为表/列名,但我强烈建议您不要使用它。这将是未来的麻烦源,而且并非所有工具都支持必要的技巧(例如使用引号)。如果可以的话,请使用不同的表名。是的,我通常不使用它们,但这只是一个小应用程序,一旦我准备好,可能就再也不会使用它了。你是指“保留”字:)你是指“保留”字:)