0

我在我的nodejs项目中使用mysql2,在mysql库中我使用多个语句来更新我的数据库并且效果很好,但是由于某种原因在mysql2中它不起作用,我搜索了很多并且没有找到任何解决方案,mysql2不支持多语句吗??

  • 这是多个查询

    async function updateChannels(dtz) {
    for (const data of dtz) {
      multipleQuery += `UPDATE myTable SET data='${data.newData}' WHERE data='${data.oldData}';`
    }
    await con.execute(multipleQuery);}
    

在 mysql.createConnection 我添加了 multipleStatements: true

  • 这是错误

UnhandledPromiseRejectionWarning: E​​rror: You have an error in your SQL syntax; 检查与您的 MySQL 服务器版本相对应的手册,以获取在“更新”附近使用的正确语法

当我将它复制并粘贴到 phpMyAdmin 控制台中时,该查询工作得很好

4

2 回答 2

1

您需要使用查询调用而不是执行:

let rows, field;
try {
  [rows, fields] = await connection.query(query);
} catch (err) {
  // handle err
}
if (rows) {
  // exploit the result
}

但除此之外,是的,执行命令将让您只运行一条指令。

于 2021-04-20T07:28:13.560 回答
0

GitHub 上已解决的问题:

您不能使用多个语句准备查询。将其一分为二或使用未准备好的语句 api ( dbpool.query(...))

于 2021-01-13T06:22:45.213 回答