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

Node.js中使用MySQL库出现ER_PARSE_ERROR(1064)语法错误求助

Node.js MySQL插入语句语法错误修复

问题根源

  1. 字段标识符格式错误:SQL语句中date字段用了单引号'date',MySQL要求字段名必须用反引号`包裹,单引号仅用于字符串值。
  2. SQL语句多余括号:定义查询语句q时,字符串末尾多了一个闭合括号),直接破坏了SQL语法结构。

修复后的代码

export const addPost = (req, res) => {
  const token = req.cookies.access_token;
  if (!token) return res.status(401).json("Unauthorized");

  jwt.verify(token, "jwtkey", (err, userInfo) => {
    if (err) return res.status(403).send("Unauthorized");

    // 修正字段引号并移除多余括号
    const q = "INSERT INTO posts(`title`, `desc`, `img`, `cat`, `date`, `uid`) VALUES (?)";

    const values = [
      req.body.title,
      req.body.desc,
      req.body.img,
      req.body.cat,
      req.body.date,
      userInfo.id,
    ];

    db.query(q, [values], (err, data) => {
      if (err) return res.status(500).json(err);
      return res.status(200).json("Post has been created.");
    });
  });
};

错误解析

从报错信息可以看到,MySQL解析到'date'时触发语法错误,同时因为原语句末尾的多余括号,导致VALUES部分的参数绑定格式混乱(最终SQL中VALUES后没有包裹参数的括号)。修复上述两个问题后,参数绑定会正常生成带括号的VALUES子句,符合MySQL语法规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 12:10:26