“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 语法错误 1064 在第 194 行为多对多关系添加外键