You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Express中MySQL的conn.end()失效,报错Cannot enqueue after invoking quit

解决 "Cannot enqueue Quit after invoking quit" 错误与MySQL连接泛滥问题

嘿,我一眼就看出问题出在哪了——你在使用express-myconnection这个中间件的同时,手动调用了conn.end(),这直接导致了重复关闭连接的冲突,进而引发了那个讨厌的错误,还导致连接泛滥。让我一步步帮你解决:

问题根源

express-myconnection的核心作用就是自动管理数据库连接的生命周期。你配置的是request模式,意味着它会为每个请求创建新连接,当请求处理完成后,中间件会自动调用conn.end()关闭连接。而你手动在代码里再调用一次,就会触发两次quit操作,自然就抛出"Cannot enqueue Quit after invoking quit"的错误了。错误又会导致连接无法被正确释放,最终造成连接泛滥。

解决方案

1. 移除手动的conn.end()调用

把dashboard.js里的conn.end()完全删掉,让express-myconnection来处理连接关闭的逻辑。修改后的dashboard.js代码如下:

var express = require('express');
var router = express.Router();

router.use(function(req, res, next) {
 console.log(req.method, req.url);
 next();
});

// 展示CRUD界面 | GET
router.get('/', function(req,res,next){
 req.getConnection(function(err,conn){
 if (err) return next("Cannot Connect");
 var query = conn.query('SELECT SUM(total_price) AS transactions_total FROM transactions WHERE date_created = CURDATE(); SELECT SUM(total_profit) AS total_profit FROM transactions', function(err,rows){
 if(err){
 console.log(err);
 return next("MySQL error, check your query");
 }
 var ab = {data:rows[0]};
 var total_profit = {data:rows[1]};
 res.render('dashboard',{ab, total_profit});
 // 移除所有手动的conn.end()调用
 });
 });
});

router.all('/', function(req,res,next){
 console.log("route for dashboard executed");
 console.log(req.params);
 next();
});

module.exports = router;
console.log('dashboard.js loaded!');

2. 修复路由冲突

你的app.js里有两个处理根路径/的路由:

  • app.use('/', dashboard);(dashboard.js已经处理了/的GET请求)
  • 后面的app.get('/',function(req,res){ res.render('./dashboard.ejs'); });

这会导致同一个请求可能被两次处理,也可能干扰连接的正常释放。把第二个重复的根路由删掉:

// 省略其他代码...
app.use('/', router);
app.use('/', dashboard); 
// 移除下面这个重复的根路由
// app.get('/',function(req,res){
//  res.render('./dashboard.ejs');
// });

额外说明

当你用express-myconnection的request模式时,每个请求的连接都会被自动创建和销毁,完全不需要手动干预。解决了重复关闭的问题后,连接泛滥的情况也会随之消失,因为每个请求结束后连接都会被正确释放。

内容的提问来源于stack exchange,提问作者Cadmos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 06:35:58