节点mysql连接结束或销毁不工作
我不知道为什么mysql.end()或mysql.destroy()不能像我预期的那样工作。这是我的密码节点mysql连接结束或销毁不工作,mysql,node.js,node-mysql,Mysql,Node.js,Node Mysql,我不知道为什么mysql.end()或mysql.destroy()不能像我预期的那样工作。这是我的密码 var mysql = require('mysql'); var connection = mysql.createConnection({ host: 'localhost', user: 'root', database: 'db', password: '' }); connection.connect(); connection.query
var mysql = require('mysql');
var connection = mysql.createConnection({
host: 'localhost',
user: 'root',
database: 'db',
password: ''
});
connection.connect();
connection.query('SELECT * FROM ofertas ', function (err, rows, fields)
{
if (err) console.log(err);
else
{
console.log(rows);
}
});
connection.destroy(function (err)
{
if (err) throw err;
});
我执行这段代码,然后转到mysql命令行并键入:
show status like 'Conn%';
前节点代码
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Connections | 3 |
+---------------+-------+
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Connections | 4 |
+---------------+-------+
后节点代码
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Connections | 3 |
+---------------+-------+
+---------------+-------+
| Variable_name | Value |
+---------------+-------+
| Connections | 4 |
+---------------+-------+
connection.state='disconnected'
谢谢您需要等到查询完成后才能破坏连接。试一试
connection.query('SELECT * FROM ofertas ', function (err, rows, fields)
{
if (err) console.log(err);
else
{
console.log(rows);
}
connection.destroy();
});
我认为节点mysql可能有问题——我遇到了一个问题,连接被破坏了,但另一个连接马上就被创建了(这就是为什么我最终使用了这个线程)。尝试添加
console.log(connection.threadId)
在破坏连接之前,如果线程id增加了1,请检查mysql或ps aux。尽管如此,在破坏连接之前,您仍然需要等待查询完成。当使用connection.end()时,所有查询回调都会执行,当它们完成时,会向mysql服务器发送一个finish paquet。在回调函数中使用connection.destroy()不一样吗?顺便说一下,我想我误解了mysql连接和线程之间的区别。连接是所有过去的连接,线程是当前的连接?不要使用connection.end();我认为它过时了。如果您使用的是连接池,connection.release()会将其返回到池中,以便另一个查询可以重新使用它,否则它将一直休眠,直到超时清除为止(运行MySQL SHOW PROCESSLIST)。这可能不是你想要的行为。Connection.destroy()完全删除连接。顺便说一句,我遇到的问题是由于代码的一个完全独立的部分生成了一个查询,而没有销毁它。我通过mysql代码中的console.logs找到了它。Connection.threadId指的是Linux进程。