为什么这个SQL INSERT语句会返回语法错误?

时间:2009-05-26 20:10:56

标签: mysql sql

好的我有一个非常简单的mysql数据库但是当我尝试通过mysql-admin运行这个查询时我得到了奇怪的错误

  

INSERT INTO customreports(study,   类型,模式,选择,描述)   价值观('1','2','3','4','5');

错误:

  

1064 - 您的SQL语法出错;查看与您的MySQL服务器版本对应的手册,以便在第1行“选择,描述”VALUES('1','2','3','4','5')附近使用正确的语法

7 个答案:

答案 0 :(得分:13)

您遇到问题是因为您使用SQL保留字作为列名而不是转义它们。试试这样:

INSERT INTO `customreports`
(`study`, `type`, `mode`, `select`, `description`)
VALUES
('1', '2', '3', '4', '5');

答案 1 :(得分:3)

是的,我会改写为:

INSERT INTO [customreports]([study],[type],[mode],[select],[description])VALUES('1','2','3','4','5' );

答案 2 :(得分:0)

只是一个猜测,但保留字“select”(列为列名)导致问题?

答案 3 :(得分:0)

“SELECT”是SQL中的保留字...使用与“select”不同的单词

答案 4 :(得分:0)

“select”一词在sql中保留。解释器认为您正在尝试在INSERT INTO语句中使用SELECT语句。您需要将字段名称括起来,以便解释器不会将它们作为命令读取。

MySQL更新:

insert into customreports ('study','type','mode','select','description') values...

答案 5 :(得分:0)

每个混乱纠正......但要记住的关键是你应该尽量不要在表格中使用保留字作为列名...例如SELECT和TYPE ....其他三个不是肯定的,但这就是你的冲突所在。是的,通过明确引用字段周围的引号将告诉SQL你的意思是该字段,但最好知道它为什么失败,而不仅仅是解决方案......有助于防止将来出现类似问题。 / p>

答案 6 :(得分:0)

同样如上所述,但我认为你需要围绕列名引用双引号,而不是单引号。也许某些类型的SQL会正确处理单引号,但我认为该标准表示字段名称的双引号,字段值的单引号。