如何多次打开/关闭mysql连接?

gojuced7  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(405)

我在mysql中使用node,我有一个路由:

const mysql = require("./mysql");
router.post("/register_user", (req, res) => {
   mysql.register(req.body).then((result) => {
      // stuff
   });
});

mysql.js版本:

const mysql = require("mysql");
const connection = mysql.createConnection("mysql://...");

exports.register = (req) => {
    const user = { name: req.name };
    return new Promise((resolve, reject) => {
       // make sure user doesn't exist already
       connection.query('...', [user], (err, data) => {
         ...

         if (isNewUser) {
           connection.query('INSERT INTO USER...', user, (insertErr, rows) => {
             ...
             resolve(rows);
             connection.end();
           }
         }
       });
    });
}

当我在我的应用程序中注册第一个用户时,这个功能非常有效。但之后,如果我立即注销(在web应用程序上),然后注册一个新用户,我会收到一个错误消息:

Error: Cannot enqueue Query after invoking quit.

为什么不创建一个新的连接?

jtjikinw

jtjikinw1#

我假设您使用的是以下npm模块mysql如果是这样的话,那么您可以简单地使用mysql池连接吗?
这个模块没有逐个创建和管理连接,而是使用mysql.createpool(config)提供了内置的连接池。
所以与其打电话 connection.end(); 你会打电话的 connection.release(); 而是将连接返回到打开的连接池。

相关问题