javascript - MySQL NodeJS 错误 : Cannot enqueue Query after invoking quit using transactions

标签 javascript mysql node.js node-modules restify

我一直在为 NodeJS 和 Restify 实现 MySQL,并且在查询方面一切都运行良好。但是当我想使用通过事务更新数据的功能时,出现以下错误:Error: Cannot enqueue Query after invoking quit.

这是跟踪:

(node:10877) UnhandledPromiseRejectionWarning: Error: Cannot enqueue Query after invoking quit.
at Protocol._validateEnqueue (/home/node_modules/mysql/lib/protocol/Protocol.js:215:16)
at Protocol._enqueue (/home/node_modules/mysql/lib/protocol/Protocol.js:138:13)
at Connection.query (/home/node_modules/mysql/lib/Connection.js:201:25)
at Connection.beginTransaction (/home/node_modules/mysql/lib/Connection.js:154:15)
at Promise (/home/app/mysql/repository/ClientDao.ts:56:23)
at new Promise (<anonymous>)
at ClientDao.updateIps (/home/app/mysql/repository/ClientDao.ts:55:16)
at /home/app/routes/ips/put.ts:22:31
at Generator.next (<anonymous>)
at fulfilled (/home/app/routes/ips/put.ts:5:58)

这是代码:

this.conn.connect();
return new Promise<any>((resolve, reject) => {
        this.conn.beginTransaction( (err) => {
            if(err) {
                reject(err);
                return;
            }
            this.conn.query('UPDATE client SET ips_allowed = ? WHERE id = ?', [ips, client.id], (error, results, fields) => {
                if(error) {
                    return this.conn.rollback(() => reject(error));
                }
                this.conn.commit((error) => {
                    if(error) {
                        return this.conn.rollback(() => reject(error));
                    }
                    this.conn.end();
                });
            });

        });
    });

如果有人能帮我看看这个错误,我将非常感激。正如我之前所说,这种情况只发生在我的交易中。

最佳答案

这个问题已经被我自己解决了,如果你之前对另一个查询进行查询,那么要小心,当你执行 .end() 时,mySql.createConnection() 载体对象会变成“未定义”或“空”,所以它不能再次连接,直到再次创建。我想如果实现方式不是最佳的话,这是显而易见的。

关于javascript - MySQL NodeJS 错误 : Cannot enqueue Query after invoking quit using transactions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58860813/

相关文章:

javascript - 如何设置 map 的缩放比例,以便可以完全看到我的路线? (这里.com api)

javascript - Node.js Knex 和 mySQL - ER_NO_REFERENCED_ROW_2 : Cannot add or update a child row: a foreign key constraint fails

javascript - ECMAScript 6 支持 node.js 及其不同的包,例如原生的express body_parser

php - mysql php搜索引擎查询多列

mysql - 使用 Sqoop 将来自 MySQL 的数据加载到 PIG 中

node.js - 收到弃用警告 : Using Buffer without `new` will soon stop working

javascript - 如何在 Jhipster Angular 生成的应用程序上使用 Electron ?

带参数的 jquery 函数调用

javascript - ffmpeg 为 HTML MediaSource 流编码 mp4

mysql - 通过 Hamachi (VPN) 访问数据库