【问题标题】:heroku node.js errorheroku node.js 错误
【发布时间】:2019-01-03 19:31:53
【问题描述】:

code 所以,我决定使用 heroku 和 node.js 制作一个不和谐点机器人,但我不断收到此错误:

错误:“DUPLICATE”处或附近的语法错误

我尝试调试但没有结果所以是的...我需要帮助。 我用 javascript 东西发送到 sql postgresql 数据库的内容:

'INSERT INTO points (Roblox_name, Points) VALUES (' + name + ', ' + amount + ') ON DUPLICATE KEY UPDATE Points=VALUES(' + amount + ')'

示例{ 金额 = 322 和 名字=乔治 }

编辑: 原始应用程序日志 [with VALUES(' + amount + ')' 更改为 ' + amount]:

2018-07-26T19:32:08.576609+00:00 app[worker.1]: Ready to serve on 1 servers, 
for 6 users.
2018-07-26T19:32:42.536398+00:00 app[worker.1]: /app/bot.js:56
2018-07-26T19:32:42.536422+00:00 app[worker.1]:             if (err) throw 
err;
2018-07-26T19:32:42.536424+00:00 app[worker.1]:                      ^
2018-07-26T19:32:42.536425+00:00 app[worker.1]: 
2018-07-26T19:32:42.536427+00:00 app[worker.1]: error: syntax error at or 
near "DUPLICATE"
2018-07-26T19:32:42.536429+00:00 app[worker.1]:     at Connection.parseE 
(/app/node_modules/pg/lib/connection.js:553:11)
2018-07-26T19:32:42.536431+00:00 app[worker.1]:     at 
Connection.parseMessage (/app/node_modules/pg/lib/connection.js:378:19)
2018-07-26T19:32:42.536432+00:00 app[worker.1]:     at TLSSocket.<anonymous> 
(/app/node_modules/pg/lib/connection.js:119:22)
2018-07-26T19:32:42.536434+00:00 app[worker.1]:     at emitOne 
(events.js:116:13)
2018-07-26T19:32:42.536435+00:00 app[worker.1]:     at TLSSocket.emit 
(events.js:211:7)
2018-07-26T19:32:42.536437+00:00 app[worker.1]:     at addChunk 
(_stream_readable.js:263:12)
2018-07-26T19:32:42.536439+00:00 app[worker.1]:     at readableAddChunk 
(_stream_readable.js:250:11)
2018-07-26T19:32:42.536440+00:00 app[worker.1]:     at 
TLSSocket.Readable.push (_stream_readable.js:208:10)
2018-07-26T19:32:42.536442+00:00 app[worker.1]:     at TLSWrap.onread 
(net.js:597:20)
2018-07-26T19:32:42.629819+00:00 heroku[worker.1]: Process exited with 
status 1
2018-07-26T19:32:42.738809+00:00 heroku[worker.1]: State changed from up to 
crashed

编辑新的错误日志:

2018-07-27T12:24:05.106369+00:00 app[worker.1]: { error: syntax error at or 
near 
"DUPLICATE"
2018-07-27T12:24:05.106409+00:00 app[worker.1]:     at Connection.parseE 
(/app/node_modules/pg/lib/connection.js:553:11)
2018-07-27T12:24:05.106411+00:00 app[worker.1]:     at 
Connection.parseMessage 
(/app/node_modules/pg/lib/connection.js:378:19)
2018-07-27T12:24:05.106412+00:00 app[worker.1]:     at TLSSocket.<anonymous> 
(/app/node_modules/pg/lib/connection.js:119:22)
2018-07-27T12:24:05.106413+00:00 app[worker.1]:     at emitOne 
(events.js:116:13)
2018-07-27T12:24:05.106414+00:00 app[worker.1]:     at TLSSocket.emit 
(events.js:211:7)
2018-07-27T12:24:05.106415+00:00 app[worker.1]:     at addChunk 
(_stream_readable.js:263:12)
2018-07-27T12:24:05.106417+00:00 app[worker.1]:     at readableAddChunk 
(_stream_readable.js:250:11)
2018-07-27T12:24:05.106418+00:00 app[worker.1]:     at 
TLSSocket.Readable.push 
(_stream_readable.js:208:10)
2018-07-27T12:24:05.106419+00:00 app[worker.1]:     at TLSWrap.onread 
(net.js:597:20)
2018-07-27T12:24:05.106420+00:00 app[worker.1]:   name: 'error',
2018-07-27T12:24:05.106422+00:00 app[worker.1]:   length: 98,
2018-07-27T12:24:05.106423+00:00 app[worker.1]:   severity: 'ERROR',
2018-07-27T12:24:05.106424+00:00 app[worker.1]:   code: '42601',
2018-07-27T12:24:05.106425+00:00 app[worker.1]:   detail: undefined,
2018-07-27T12:24:05.106426+00:00 app[worker.1]:   hint: undefined,
2018-07-27T12:24:05.106427+00:00 app[worker.1]:   position: '72',
2018-07-27T12:24:05.106428+00:00 app[worker.1]:   internalPosition: 
undefined,
2018-07-27T12:24:05.106429+00:00 app[worker.1]:   internalQuery: undefined,
2018-07-27T12:24:05.106430+00:00 app[worker.1]:   where: undefined,
2018-07-27T12:24:05.106431+00:00 app[worker.1]:   schema: undefined,
2018-07-27T12:24:05.106433+00:00 app[worker.1]:   table: undefined,
2018-07-27T12:24:05.106434+00:00 app[worker.1]:   column: undefined,
2018-07-27T12:24:05.106435+00:00 app[worker.1]:   dataType: undefined,
2018-07-27T12:24:05.106436+00:00 app[worker.1]:   constraint: undefined,
2018-07-27T12:24:05.106437+00:00 app[worker.1]:   file: 'scan.l',
2018-07-27T12:24:05.106438+00:00 app[worker.1]:   line: '1087',
2018-07-27T12:24:05.106439+00:00 app[worker.1]:   routine: 'scanner_yyerror' 
}

【问题讨论】:

    标签: javascript sql node.js heroku heroku-postgres


    【解决方案1】:

    您不需要在语句Points=Values(' + amount + ')'的这一部分中重新指定值

    可以改为Points = amount。也许您需要将 CAST 或 CONVERT amount 设置为整数值,但应该就是这样。

    【讨论】:

    • 是的,在添加值位并转换或转换之前我得到了错误?
    • 另外,if(!isNaN(amount)) 检查变量是否为整数
    【解决方案2】:

    如果 Roblox_name 和 Points 是字符串,那么值必须设置在 'values'

    "INSERT INTO points (Roblox_name, Points) VALUES ('" + name + "','" + amount + "')
    ON DUPLICATE KEY UPDATE Points=VALUES('" + amount + "')"
    

    你应该使用

    if(err !== null){
        console.error(err);
        return;
    }
    

    而不是

    if (err) throw err;
    

    【讨论】:

    • 感谢您的输入,但我都添加了,但仍然收到错误
    • 我编辑后的日志在 EDIT new error log: in the main post
    • 我不知道sql中DUPLICATE的语法,所以在这里问一下你想怎么插入数据,可以换成别的查询。
    • 这意味着插入一个值,除非 Roblox_name 值存在然后它更新然后它更新值
    • 如果指定更新数据如果存在,为什么不尝试使用 select 语句来检索“Roblox_name”如果存在,如果它不存在可以使用 UPDATE 或 INSERT 语句。跨度>
    猜你喜欢
    • 1970-01-01
    • 2016-01-05
    • 2017-01-21
    • 1970-01-01
    • 1970-01-01
    • 2021-05-02
    • 2012-03-10
    • 2020-04-30
    • 1970-01-01
    相关资源
    最近更新 更多