您的位置:首页 > 数据库 > MySQL

nodejs mysql pool 只能插入10条记录或者较少记录

2014-05-08 12:34 751 查看
BEGIN;

解决方案:从连接池获取到的Connection,执行完操作后,必须及时关闭!

即:connection.end();

使用后发现console有打印出警告信息,大致意思为 end() 方法已过期,所以应该使用 connection.release() 方法!

测试环境:

1、首先nodejs环境下,安装 node-mysql,注意是“felixge/node-mysql”,不是“node-mysql”

2、我自己创建了一个简单的util,操作数据,代码如下

/**
* 数据库操作
* author: yzChen 2014-5-6 21:58:57
*/
var mysql = require('mysql');

var pool = mysql.createPool({
host: '127.0.0.1',
user: 'root',
password: 'root',
database:'nodejs',
port: 3306
});

exports.execSql = function(sql, fn) {
pool.getConnection(function (err, conn) {
conn.query(sql, function (err1, res1) {
fn(err1, res1);
});
});
}
3、调用时,就是util.execSql('your sql', function(err, res) { // your code })

但是需要注意的是,每次执行sql都是从连接池获取一个Connection!

下面使用测试代码,进行简单的测试:

var sql = 'insert test(name) values(UUID())';
for(var i = 0; i < 15; i++) {
dbUtil.execSql(sql, function(err, res) {
if (err) console.log(err);
console.log("INSERT Return ==> ");
console.log(res);
});
}


执行完后,查看数据库记录,发现只有10条记录。

最终排查各种原因后,结果是因为每次获取Connection后,没有关闭!

只需要在

conn.query(sql, function (err1, res1) {


的后面添加

conn.release(); // 执行完成后,需要及时关闭连接


一行代码即可。

重新测试,查询数据库,共计新增15条记录。

END;

--- --- --- ---> 点击查看更多最新原创博文<--- --- --- ---
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: