Javascript 查询在PGAdmin中工作,但在服务器(节点\本地主机)上失败
我们使用节点服务器和pg模块来调用我们的postgres数据库。在pgadmin中进行查询时,我会得到所需的结果,但是当尝试在我们的服务器(js)上运行相同的查询时,它会抛出错误,有人知道这是什么原因,以及如何修复吗 以下是一个问题:Javascript 查询在PGAdmin中工作,但在服务器(节点\本地主机)上失败,javascript,postgresql,pg,Javascript,Postgresql,Pg,我们使用节点服务器和pg模块来调用我们的postgres数据库。在pgadmin中进行查询时,我会得到所需的结果,但是当尝试在我们的服务器(js)上运行相同的查询时,它会抛出错误,有人知道这是什么原因,以及如何修复吗 以下是一个问题: SELECT DISTINCT waswindows.computername as servername, waswindows.appcode, ipaddress, result, WASInventorywindows.uploaddate FR
SELECT DISTINCT waswindows.computername as servername, waswindows.appcode, ipaddress, result, WASInventorywindows.uploaddate
FROM public.waswindows JOIN WASInventorywindows
ON (waswindows.appcode = $1 OR waswindows.computername LIKE $2 OR WASInventorywindows.appcustodian LIKE $2)
AND position(WASInventorywindows.servername in waswindows.computername) > 0
AND result = 'FAILED' AND waswindows.uploaddate = (SELECT MAX(uploaddate) FROM waswindows)
这在PGAdmin中运行得很好(用params替换$1和$2),并且在PGAdmin和Server中运行一个非常类似的查询,没有任何错误,但是失败了。以下是错误日志:
PARAMS ARE: Alex AND %Alex%
{ error: syntax error at or near "JOIN"
at Connection.parseE (C:\Users\326009107.MAPLE\Desktop\Compliance\GHSRiskTSSCompliance\node_modules\pg\lib\connection.js:567:11)
at Connection.parseMessage (C:\Users\326009107.MAPLE\Desktop\Compliance\GHSRiskTSSCompliance\node_modules\pg\lib\connection.js:391:17)
at Socket.<anonymous> (C:\Users\326009107.MAPLE\Desktop\Compliance\GHSRiskTSSCompliance\node_modules\pg\lib\connection.js:129:22)
at emitOne (events.js:96:13)
at Socket.emit (events.js:188:7)
at readableAddChunk (_stream_readable.js:176:18)
at Socket.Readable.push (_stream_readable.js:134:10)
at TCP.onread (net.js:548:20)
name: 'error',
length: 94,
severity: 'ERROR',
code: '42601',
detail: undefined,
hint: undefined,
position: '143',
internalPosition: undefined,
internalQuery: undefined,
where: undefined,
schema: undefined,
table: undefined,
column: undefined,
dataType: undefined,
constraint: undefined,
file: 'scan.l',
line: '1086',
routine: 'scanner_yyerror' }
C:\Users\326009107.MAPLE\Desktop\Compliance\GHSRiskTSSCompliance\API\WAS\getdata.js:44
set.push(results.rows);
参数为:Alex和%Alex%
{错误:在“JOIN”处或附近出现语法错误
在Connection.parseE(C:\Users\32609107.MAPLE\Desktop\Compliance\GHSRiskTSSCompliance\node\u modules\pg\lib\Connection.js:567:11)
在Connection.parseMessage(C:\Users\32609107.MAPLE\Desktop\Compliance\GHSRiskTSSCompliance\node\u modules\pg\lib\Connection.js:391:17)
插座。(C:\Users\32609107.MAPLE\Desktop\Compliance\GHSRiskTSSCompliance\node\u modules\pg\lib\connection.js:129:22)
在emitOne(events.js:96:13)
在Socket.emit(events.js:188:7)
在readableAddChunk(_stream_readable.js:176:18)
在Socket.Readable.push(_stream_Readable.js:134:10)
在TCP.onread(net.js:548:20)
名称:“错误”,
长度:94,
严重性:“错误”,
代码:“42601”,
细节:未定义,
提示:未定义,
位置:'143',
内部位置:未定义,
internalQuery:未定义,
其中:未定义,
模式:未定义,
表:未定义,
列:未定义,
数据类型:未定义,
约束:未定义,
文件:“scan.l”,
行:“1086”,
例程:“扫描器错误”}
C:\Users\32609107.MAPLE\Desktop\Compliance\GHSRiskTSSCompliance\API\WAS\getdata.js:44
set.push(results.rows);
我们尝试将名称更改为别名,重新排序项目,更改db字符串,但仍然一无所获 好的,我已经找到了原因,并将其发布在这里,供那些会遇到同样问题的人使用。在web端的查询中连接字符串时,请确保有空格,例如:
"SELECT DISTINCT name, address, city" +
"FROM public.city JOIN employees"...
是错误的,正确的版本如下所示:
"SELECT DISTINCT name, address, city" +
" FROM public.city JOIN employees"...
^_________note this space_______