You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Express执行SQL报ER_PARSE_ERROR但MySQL Workbench运行正常如何解决

问题原因

你的报错核心是 order 属于MySQL的保留关键字,直接作为表名使用时,MySQL会将其解析为语法关键字而非表名,因此触发1064语法错误。

你在MySQL Workbench中添加数据库名前缀后可正常执行的原因是:加上库名.前缀后,MySQL会明确识别后续的标识符为表名,不会再当做保留关键字处理。

解决方案

你可以任选以下两种方案解决问题:

  • 方案1:修改SQL语句,用反引号包裹表名order,避免关键字解析冲突,修改后的INSERT语句如下:
    const newOrder = "INSERT INTO `order` (order_id,order_date,customer_id,duration_from,duration_to,machine_id,total_rent,invoice_number,status) VALUES(?,?,?,?,?,?,?,?,?);";
    
    注意包裹order的是反引号(键盘ESC键下方的字符),不是单引号或双引号。
  • 方案2:长远来看更推荐将表名修改为非保留关键字的名称,比如orders,从根源避免后续同类问题出现。

你已经在创建连接池时指定了database: "user_database"参数,不需要额外在SQL里拼接数据库名前缀,修改表名的引用方式即可正常执行。


内容的提问来源于stack exchange,提问作者Rajeev Bhat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 09:42:00