如果我们不关闭mysql节点js模块中的mysql连接,是否有任何问题

时间:2012-05-31 07:40:58

标签: mysql node.js node-mysql node-modules

如果我们不在节点js中关闭或结束mysql连接,它是否会影响功能。

我这样做

var mysql      = require('mysql');
var connection = mysql.createConnection(...);

connection.query('SELECT 1', function(err, rows) {
  // connected! (unless `err` is set)
});

我的代码中的任何位置都没有结束mysql连接。我的问题是 是否有必要关闭mysql连接。 如果我们不关闭mysql连接将来我将遇到任何其他问题。

请帮助我成为nodejs的新手

EDIT1 我不会遇到任何问题,如无法连接,太多连接打开等,意味着任何资源相关的问题?右。

EDIT2

如果我们不手动结束或使用结束函数,那么即时mysql连接将关闭?

4 个答案:

答案 0 :(得分:5)

应该关闭连接。

您执行此操作的时间点取决于您的程序使用该连接执行的操作。

如果程序存在很长时间并且只需要一个连接但是连续使用该连接,那么您可以保持一个连接打开,但是如果需要,您应该准备重新打开连接 - 例如如果服务器重新启动。

如果程序只打开一个连接,做了一些事情,然后在一段时间内没有使用连接,你应该在你不使用时关闭连接。

如果程序是短暂的,即它建立连接,做一些事情,然后退出,你可以在不关闭连接的情况下离开,因为它会在你的程序退出时自动关闭。

答案 1 :(得分:1)

实际上,你会遇到像MySQL这样的问题:

  

“[host]因许多连接错误而被阻止;使用'mysqladmin flush-hosts”取消阻止

因为MySQL会将那些失败的断开连接计为“连接错误”。然后,在MySQL服务器上执行FLUSH HOSTS之前,您的数据库仍然无法使用。我知道这是事实,它发生在我们的NodeJS项目中。

编写一些代码,以便在使用connection.end()connection.destroy()

的任何输出或呈现语句之前显式关闭数据库连接

答案 2 :(得分:0)

不,你不需要关闭它。

答案 3 :(得分:0)

如果你问的是“当我告诉服务器我正在关闭连接时,mysql端是否有任何特定的清理”,那么答案是“不,如果你只是退出客户端进程或关闭套接字,就像调用连接一样.END()“