5

如果我们在 node 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 我不会遇到任何问题,如无法连接、打开的连接太多等,是否意味着任何与资源相关的问题?对。

编辑2

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

4

4 回答 4

7

应该关闭连接。

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

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

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

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

于 2012-05-31T09:09:09.723 回答
2

实际上,你会遇到 MySQL 中的这样一个问题:

“[host] 由于许多连接错误而被阻止;使用 'mysqladmin flush-hosts 解除阻止”

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

connection.end()在使用或的任何输出或渲染语句之前编写一些代码以显式关闭数据库连接connection.destroy()

于 2012-12-24T15:59:18.563 回答
0

不,你不需要关闭它。

于 2012-05-31T07:42:25.650 回答
0

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

于 2012-12-25T07:54:53.937 回答