场景
本人用三种方式链接数据库:
- 第一种:使用
.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();
// 查询后处理的代码
})
});
...