1

我无法弄清楚是什么导致我的 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 ( match_no, season, hometeam, awaytem) VALUES (1, 1, 2, 3)'附近使用正确的语法

我已经检查了手册和网络上的六个示例以及什么,并尝试了对语法的各种更改,以防有一些 MySql 特定的奇怪之处,但似乎没有任何效果。

4

3 回答 3

5

更改awaytemawayteam查看它的运行情况并使用 `Match` 作为表:match是保留字。

于 2010-04-18T15:26:33.483 回答
4

Match是一个reservedMySQL

这是MySQL 保留字的列表

将匹配包含在反引号中:

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

同样正如 Pax 指出的那样,您拼错了列名。

于 2010-04-18T15:26:20.793 回答
2

匹配是一个相反的词
,所以,

INSERT INTO `Match`

请注意您用于字段名称的相同反引号,
这些不是用于装饰

于 2010-04-18T15:28:22.497 回答