MySQL 1064: You have an error in your SQL syntax
SQL 语法不被解析器接受的通用错误,错误位置通常在报错提示的 "near" 附近。
现象
ERROR 1064 (42000): 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 'ORDER date LIMIT 10' at line 1
原因
- 使用了 MySQL 保留字作列名/表名且未加反引号(如
order,group,select)。 - 字符串用了双引号(MySQL 默认要求单引号),或引号未闭合。
- 缺少逗号、括号不匹配、多了/少了分号。
- SQL 语法随版本变化(如
LIMIT位置、JSON 函数)。
解决
-- 保留字加反引号
SELECT id, `order` FROM t WHERE `group` = 1;
-- 字符串用单引号
INSERT INTO t(name) VALUES ('bug.icu');
-- 用 EXPLAIN / 客户端格式化定位 near 处
SHOW WARNINGS;预防
- 表/列命名避开保留字,或统一用反引号包裹。
- 在迁移脚本中先用测试库验证再上生产。
- 用 ORM 减少手写 SQL;手写时用参数化查询。