【发布时间】:2020-02-03 08:07:39
【问题描述】:
我正在节点中测试一些 javascript 代码、节点中的 mysql 包和 Visual Studio 代码终端中的 mysql。
我已经尝试了所有我能想到的方法 - 添加 ()、''、"" 等...我将语句分为更新语句和插入语句,并针对phpmyadmin ...令人惊讶的是,每个语句都可以正常工作!只有当我添加“IF @@ROWCOUNT=0 时,整个语句才会中断。
我的脚本正在运行以下保存到 javascript 变量中的 SQL 语句:
var sql = "UPDATE players SET userID='123',username='FNNewUser',site='blah' WHERE userID='123' IF @@ROWCOUNT=0 PRINT 'NO ROWS UPDATED'";
当我运行脚本时,它表现得好像可以工作,但随后抛出以下错误:
Error: ER_PARSE_ERROR: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'IF @@ROWCOUNT=0 PRINT 'NO ROWS UPDATED'' at line 1
at Query.Sequence._packetToError (C:\node\node_modules\mysql\lib\protocol\sequences\Sequence.js:47:14)
at Query.ErrorPacket (C:\node\node_modules\mysql\lib\protocol\sequences\Query.js:77:18)
at Protocol._parsePacket (C:\node\node_modules\mysql\lib\protocol\Protocol.js:291:23)
at Parser._parsePacket (C:\node\node_modules\mysql\lib\protocol\Parser.js:433:10)
at Parser.write (C:\node\node_modules\mysql\lib\protocol\Parser.js:43:10)
at Protocol.write (C:\node\node_modules\mysql\lib\protocol\Protocol.js:38:16)
at Socket.<anonymous> (C:\node\node_modules\mysql\lib\Connection.js:91:28)
at Socket.<anonymous> (C:\node\node_modules\mysql\lib\Connection.js:525:10)
at Socket.emit (events.js:189:13)
at addChunk (_stream_readable.js:284:12)
--------------------
at Protocol._enqueue (C:\node\node_modules\mysql\lib\protocol\Protocol.js:144:48)
at Connection.query (C:\node\node_modules\mysql\lib\Connection.js:201:25)
at axios.get.then.response (C:\node\df-lineups.js:34:8)
at process._tickCallback (internal/process/next_tick.js:68:7)
我正在尝试检查 mysql 中是否已经存在记录,如果记录不存在......然后运行插入语句。虽然这个问题可能已经在 StackO 上得到解答,但我也很感兴趣为什么当我将 IF 条件添加到我的 SQL 语句时它会引发错误。
【问题讨论】:
标签: javascript mysql sql rowcount