“mysql 语法错误”,对问题没有真正的了解

Posted

技术标签:

【中文标题】“mysql 语法错误”,对问题没有真正的了解【英文标题】:"Error in mysql syntax" with no real idea of the issue 【发布时间】:2013-06-23 19:28:26 【问题描述】:

我的代码在插入数据库的代码行中抛出错误Error in mysql syntax。当我回显插入时,我得到 ​​p>

INSERT INTO patches (
 name, 
 description, 
 type, 
 com1, 
 com2, 
 com1,  
 code, 
 db, 
 other, 
 tfsID, 
 release, 
 createdBy, 
 createdDtTm, 
 updatedBy, 
 updatedDtTm
) VALUES (
 'testPatch2',
 'longPatchDescription',
 'Code - Full Build',
 '0',
 '1',
 '1', 
 '0',
 '1',
 '1',
 '98765',
 '6.11.0',
 'mhopkins',
 '2013/06/26 08:58:19',
 'mhopkins', 
 '2013/06/26 08:58:19'
)

我相信我的语法没问题。但我很困惑为什么我无法获得更多关于错误的数据。想法?

准确的错误

Errormessage: 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 'release, createdBy, createdDtTm, updatedBy, updatedDtTm) VALUES ('testPatch2','l' at line 1

【问题讨论】:

你能添加确切的错误吗?我建议您可能使用 SQL 保留字作为列名,您可以通过在每列周围使用反引号来绕过它。 MySQL 生成更详细的错误消息。您使用的任何工具都是释义。直接对 MySQL 运行查询。 发布表的创建表,以便我们可以看到列类型,但快速猜测我会说所有这些数字都应该是 1 而不是 '1' 添加了确切的错误。我在 mysql workbench 中运行查询并得到相同的文本 @mhopkins321 - release 确实是保留字,所以用反引号括起来。尽管您应该考虑尽可能重命名该字段。 【参考方案1】:

RELEASE是mysql的保留字,不能作为列名或表名不加引号。

此处为 MySQL 保留字列表:http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html

【讨论】:

其实。它可以用作列名,您只需将其转义即可。但如果可能的话,不应该使用它。 将列重命名为 codeRelease 并修复了它!谢谢。我的计时器是 9 分钟来接受答案

以上是关于“mysql 语法错误”,对问题没有真正的了解的主要内容,如果未能解决你的问题,请参考以下文章

简单的准备语句中的MySQL语法错误?

mysql 语法错误 1064 在第 194 行为多对多关系添加外键

PHP函数返回MySQL语法错误[重复]

无法在 MySQL 语法错误中运行查询意外

MySQL 语法错误 1064,带有 PDO UPDATE 语句(带有命名或未命名占位符)返回 WSOD

MySQL 语法错误?奇怪的错误