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

PGAdmin可执行的PostgreSQL查询在Node.js服务端执行报错求助

解决Node.js pg模块连接PostgreSQL时的SQL语法错误

先帮你拆解下问题根源,从报错信息和日志来看,你的SQL在Node.js环境里被解析成了不符合语法的格式,主要有两个核心问题:

1. 参数传递格式完全错误

从日志里的PARAMS ARE: Alex AND %Alex%就能看出来,你在Node.js代码里传递参数时,把$1和$2对应的两个值拼成了一个字符串"Alex AND %Alex%"传给了pg模块。但pg模块要求参数必须是数组形式,每个占位符$n对应数组里的第n个元素。

这种错误会导致PostgreSQL把$1替换成这个带AND的字符串,而$2没有对应参数值,直接破坏了SQL的结构,最终在JOIN附近触发语法错误。

修复方法:

把参数改成数组形式,分别传入$1和$2的纯值,不要手动在参数里加AND(你的SQL语句里已经用OR连接了条件,参数只需要传对应值就行):

// 正确的参数传递方式
const queryParams = ["Alex", "%Alex%"];
// 调用pg的query方法时传入数组
client.query(yourSqlStatement, queryParams, (err, results) => {
  // 处理结果或错误
});

2. SQL语句包含HTML转义字符

你提供的SQL语句里写的是position(WASInventorywindows.servername in waswindows.computername) > 0,这里的>是HTML转义字符,对应标准大于号>。但PostgreSQL不认识>这个符号,如果在Node.js代码里直接用这段带转义的SQL,必然触发语法错误。

修复方法:

把SQL里的>替换成标准SQL大于号>,修正后的对应部分为:

position(WASInventorywindows.servername in waswindows.computername) > 0

额外验证技巧

如果修改后仍有问题,可以手动把占位符替换成参数值,生成完整SQL语句在PGAdmin里执行:如果能正常运行,说明Node.js里的参数传递或SQL语句还有问题;如果也报错,再排查SQL逻辑(不过你说PGAdmin里能跑,所以大概率是前两个原因)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 06:17:17