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

来源:互联网 发布:彩虹源码安装 编辑:程序博客网 时间:2024/06/16 05:03

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;

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

0 0
原创粉丝点击