node mysql模块 链接数据库遇到的问题

场景

本人用三种方式链接数据库:

  • 第一种:使用.connect() .end()。连续请求,第一次可以,后面就时好时坏
  • 第二种:不使用 .connect() .end()。连续请求,所有请求正常,参考 文档中有句话However, a connection can also be implicitly established(隐式链接) by invoking a query. 为啥隐式链接就ok?
  • 第三种:使用链接池 mysql.createPool()。连续请求,所有请求正常

查了各种资料,在GitHub上也遇到了同样的这个问题, issues 虽然知道用连接池和隐式链接就ok,但是还想搞清楚。并且如何用第一种使用.connect() .end()达到连续请求而不报错

var mysql      = require('mysql');
// 第一种 使用 .connect() .end()
var connection = mysql.createConnection({
 // 各种设置
})
...
connection.connect()
connection.query(sql, function (error, results, fields) {
 // 查询后处理的代码
})
connection.end()
...

// 第二种 不使用 .connect() .end()
var connection = mysql.createConnection({
 // 各种设置
})
...
connection.query(sql, function (error, results, fields) {
 // 查询后处理的代码
})
...

// 第三种 使用链接池
var pool = mysql.createPool({
 // 各种设置
})
...
pool.getConnection(function (err, connection) {
  connection.query(sql, function (error, results, fields) {
    connection.release();
    // 查询后处理的代码
  })
});
...
阅读 890
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题