Mysql 为什么此SQL INSERT语句返回语法错误?
好的,我有一个非常简单的mysql数据库,但是当我试图通过mysql管理员运行这个查询时,我会遇到奇怪的错误 插入客户报告(研究、, 类型、模式、选择、说明) 值('1','2','3','4','5') 错误:Mysql 为什么此SQL INSERT语句返回语法错误?,mysql,sql,Mysql,Sql,好的,我有一个非常简单的mysql数据库,但是当我试图通过mysql管理员运行这个查询时,我会遇到奇怪的错误 插入客户报告(研究、, 类型、模式、选择、说明) 值('1','2','3','4','5') 错误: 1064-您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,了解在第1行中使用“select,description”(选择,描述)值('1','2','3','4','5')附近的正确语法 您遇到了问题,因为您使用SQL保留字作为列名,而没有转义它们。试着这样做: IN
1064-您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,了解在第1行中使用“select,description”(选择,描述)值('1','2','3','4','5')附近的正确语法
您遇到了问题,因为您使用SQL保留字作为列名,而没有转义它们。试着这样做:
INSERT INTO `customreports`
(`study`, `type`, `mode`, `select`, `description`)
VALUES
('1', '2', '3', '4', '5');
只是猜测一下,但是保留字“select”(列为列名)会导致问题吗?“select”是SQL中的保留字。。。请使用与“选择”不同的词。sql中保留了“选择”一词。解释器认为您试图在INSERT INTO语句中使用SELECT语句。您需要将字段名括起来,以便解释器不会将其作为命令读取 MySQL更新:
insert into customreports ('study','type','mode','select','description') values...
是的,我会重写为:
在[customreports]([study]、[type]、[mode]、[select]、[description])中插入值('1','2','3','4','5') 每一个混沌都正确。。。但需要记住的关键是,您应该尽最大努力不要将保留字用作表中的列名。。。例如选择并键入。。。。其他三个都不是正面的,但这就是你的冲突所在。是的,通过在字段周围加引号来明确地告诉SQL您指的是其中的字段,但最好知道它失败的原因,而不仅仅是解决方法。。。有助于防止将来出现类似问题。同上,但我相信列名周围需要双引号,而不是单引号。也许某些类型的SQL能够正确处理单引号,但我认为标准规定字段名使用双引号,字段值使用单引号。+1这是正确的答案,但我肯定会将字段名更改为非保留字。使用保留字作为对象名会让你和你之后的每个人感到头疼。这确实是正确的答案。但是,我不建议仅仅为了不使用保留字而更改列名,这是一种很好的做法,可以避开所有标识符,这将为您节省大量的麻烦。虽然我必须承认,“select”作为列名有点过头了。不,这是mysql,mysql接受倒勾作为标识符转义字符。这并不能回答这个问题。若要评论或要求作者澄清,请在他们的帖子下方留下评论。@il_guru,查看选定的答案,然后是我的答案,注意到任何相似之处吗?