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

Node.js操作MySQL批量插入数据报SQL语法错误

错误原因

你遇到的语法报错由两个问题共同导致:

  • SQL语句语法不符合规范:标准INSERT语法要求表名后的列名列表必须用圆括号包裹,你写的SQL里表名test后直接拼接列名,没有加括号,数据库解析到ID位置时无法识别语法结构,和报错提示的错误位置完全对应。
  • query方法传参结构错误:MySQL驱动处理批量插入时,待插入的二维值数组直接作为预编译替换参数传入即可,你额外给值数组多套了一层数组,还把回调函数塞进了预编译参数的数组里,驱动会尝试把回调函数转成字符串拼接进SQL,进一步引发语法异常。
修复代码

先修正SQL语句,给列名列表补上圆括号,再调整query方法的传参结构,把回调函数作为独立的第三个参数传入,不要放到预编译参数数组中:

const sql =
  "INSERT INTO test (`ID`, `Name`, `Address`, `Phone`, `HomeAddress`) VALUES ?";
const values = [
  [1, "fathe", "Dhaka", 1017310, "Madhabdi"],
  [1, "fathe", "Dhaka", 1017310, "Madhabdi"]
];
dbconnection.query(sql, [values], function (err: any, results: any) {
  if (err) {
    console.error("插入失败:", err);
    return;
  }
  console.log("插入成功,影响行数:", results.affectedRows);
});

补充说明:如果你用的是Promise版本的MySQL驱动(比如mysql2/promise),不需要传回调,直接用await dbconnection.query(sql, [values])接收返回结果即可。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 20:15:37