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

Node.js向PostgreSQL执行INSERT查询时报语法错误如何解决

问题原因
  • 你使用的PostgreSQL Node.js驱动pg的参数占位符语法和MySQL存在差异:MySQL用?作为匿名参数占位符,而pg要求使用按顺序编号的占位符$n(n从1开始计数)。
  • 直接复用MySQL教程的VALUES(?,?,?,?)写法时,pg无法识别?字符,解析SQL过程中触发语法错误,你收到的错误码42601就是PostgreSQL官方定义的语法错误标识,和报错场景完全匹配。
修复方案

将插入SQL语句中的四个?按顺序替换为$1、$2、$3、$4即可,修改后的代码如下:

db.query(
  "INSERT INTO passwords (user_id, secure_password, iv, created_by) VALUES($1,$2,$3,$4);",
  [1058083062,hashedPassword.password, hashedPassword.iv, 1058083062],
  (err,result) => {
      if (err) {
          console.log(err);
      } else {
          res.send("Success");
      }
  }
)
注意事项

占位符编号和传入的参数数组顺序一一对应:数组第0位对应$1、第1位对应$2,以此类推,无需调整参数数组的原有顺序。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 16:06:04