jhyjhy12138 2019-08-28 11:11 采纳率: 0%
浏览 417

koa 一次执行两条sql语句为什么会出问题?

使用koa 搭建后台时,有个点赞需求需要两条sql语句执行,我在数据库里执行两条语句都能正确返回结果,
但是在Service层里包装语句后去执行query()函数,后台给我返回错误:球球大家

  • 这是Service层代码 ``` const query = require('../allServices');

module.exports = async(_arr) => {
//console.log(_arr) [2,2,2,'2019-08-28 10:37:23.352','评论']
let _sql = 'update comments set comment_like_count = comment_like_count +'+ 1 +' where id = ?;'+
'insert into likes (theme_id,user_id,like_time,blogOrCom) values (?,?,?,?);';

return query(_sql, _arr);

}

* 这是query函数

const mysql = require('mysql');
const config = require('../config/config');

let pool = mysql.createPool({
host: config.database.HOST,
user: config.database.USERNAME,
password: config.database.PASSWORD,
database: config.database.DATABASE
});

let query = function(sql,values){
return new Promise((resolve, reject) => {
pool.getConnection(function(err, connection) {
if(err) {
reject(err);
}else {
connection.query(sql, values, (err, rows, fields) => {
if(err) {
reject(err);
}else {
resolve(rows);
}
connection.release();//结束会话
})
}
})
})
}

module.exports = query;

* 这是报错截图
![图片说明](https://img-ask.csdn.net/upload/201908/28/1566961717_980431.jpg)
  • 写回答

1条回答 默认 最新

  • 憧憬blog 2023-06-26 17:38
    关注

    出现这个问题的原因是因为mysql不支持执行多条语句。在执行多条语句时,会抛出这个错误。在执行query函数时,会对sql语句进行语法验证,因此无法直接执行包含多条语句的sql语句。你可以考虑在Service层分别执行两条sql语句,或者使用一些第三方的库,例如mysql2或sequelize,它们可以支持执行多条语句。

    评论

报告相同问题?

悬赏问题

  • ¥15 kafka 分区副本增加会导致消息丢失或者不可用吗?
  • ¥15 微信公众号自制会员卡没有收款渠道啊
  • ¥15 stable diffusion
  • ¥100 Jenkins自动化部署—悬赏100元
  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误