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

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;

--- --- --- ---> 点击查看更多最新原创博文<--- --- --- ---

 

技术交流

 

 

©️2020 CSDN 皮肤主题: 创作都市 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值