症状
出现 ERROR 1064 (42000): You have an error in your SQL syntax ... near '...'。near 片段标出解析停止的位置,这正是修复的关键。
诊断
打印拼接后的确切 SQL 并直接测试:
mysql -e "SELECT 1 FROM users WHERE order = 1" # 'order' is reserved
修复
为标识符加反引号并使用占位符:
SELECT id FROM users WHERE `order` = 1;
await pool.query('SELECT id FROM users WHERE status = ?', [status]);
避免把值直接拼进 SQL 文本。
验证
再次执行查询,不再报 1064;打印出的 SQL 中标识符带反引号、参数为占位符,且 mysql 客户端同样能接受。