MySQL INSERT语句1064语法错误排查:请定位问题原因
问题排查:MySQL INSERT语句语法错误
我一眼就定位到问题了——你用到了MySQL的保留关键字作为字段名,直接导致SQL语法解析失败。
错误根源
你的表字段里有个limit,这是MySQL的保留关键字(就是用来限制查询返回行数的那个LIMIT)。当你在INSERT语句里直接写limit时,数据库会误以为你要执行LIMIT命令,而不是引用字段,所以触发了1064语法错误。错误提示里的near ' limit'也正好指向这个字段的位置,完全印证了这个问题。
修正后的INSERT语句
只需要用反引号()把limit`字段名包裹起来,明确告诉数据库这是一个字段而非SQL命令:
INSERT INTO tasks (task_id, priority, `limit`, total_active, time_limit, start_time, params) VALUES ("d", "9", "1", "0", "1549699912", "1549696366", "");
额外兼容性检查
顺便帮你确认了其他字段的插入值兼容性:
priority是tinyint(1),你插入的字符串"9"会被MySQL自动转换为整数,完全没问题;time_limit和start_time是int(11),字符串形式的时间戳也会自动转成整数,符合要求;params允许为NULL,插入空字符串也符合字段规则。
所以核心问题就是关键字未转义的问题,修正后应该就能正常执行了。
内容的提问来源于stack exchange,提问作者levaa
相关产品推荐
相关产品推荐

