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;

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

技术交流

nodejs mysql pool 只能插入10条记录或者较少记录的更多相关文章

  1. MySQL使用INSERT插入多条记录

    MySQL使用INSERT插入多条记录,应该如何操作呢?下面就为您详细介绍MySQL使用INSERT插入多条记录的实现方法,供您参考. 看到这个标题也许大家会问,这有什么好说的,调用多次INSERT语 ...

  2. 解决dede搜索页面只能显示10条信息解决方案

    解决dede搜索页面只能显示10条信息解决方案,感觉显示的信息太少,这时就要想办法去解决一下.看看有什么好办法来解决一下这个问题. dede搜索页模板中,默认只能显示10条记录. 打开dede搜索页模 ...

  3. mysql一次插入多条数据

    mysql一次插入多条数据: INSERT INTO hk_test(username, passwd) VALUES ('qmf2', 'qmf2'),('qmf3', 'qmf3'),('qmf4 ...

  4. Mysql 保留最新的10条数据

    Mysql每天执行计划,保留最新的10条数据,其余的删除 1.Mysql 保留最新的10条数据 sql语句: DELETE tb FROM tbname AS tb,( SELECT id FROM ...

  5. mysql中迅速插入百万条测试数据的方法

    对比一下,首先是用 mysql 的存储过程弄的: 复制代码代码如下: mysql>delimiter $ mysql>SET AUTOCOMMIT = 0$$ mysql> crea ...

  6. MySQL往表里插入千条数据 存储过程

    工作中遇到的问题,先记录一下,方便以后查看 存在两张表,user表和friend表 user表部分字段,如上图 friend表部分字段,如上图 往friend表插入千条数据,friend表中的user ...

  7. MySql LAST_INSERT_ID 【插入多条数据时】

    LAST_INSERT_ID 自动返回最后一个 INSERT 或 UPDATE 操作为 AUTO_INCREMENT 列设置的第一个发生的值. 参考这里 The ID that was generat ...

  8. Nodejs mysql pool使用实例

    前段时间在写一个版本发布工具,用到express+mysql实现,当站点运行很长一段空白时间后,node进程会自动down掉,提示mysql连接错误,谷歌后发现是mysql自身的特性导致,因此后来改为 ...

  9. python 往mysql数据库中插入多条记录。

    最近想写mysql库,用到insert into语句,如何一次性将多条记录插入库表中呢. MySQLdb提供了两个执行语句的方法:一个是execute(),另一个是executemany() exec ...

随机推荐

  1. T12焊台控制器制作教程 | T12烙铁 | PID增量式算法恒温控制 | 运算放大器-热电偶电压采集 | OLED屏幕显示-SPI通信 | 旋转编码器EC11用户操作

    前言 购买T12烙铁的相关配件已经1年多了,期间也尝试了一些开源的T12控制器,但都没有成功,要么是配套资料少,要么是英文的,其中51和arduino的居多,STM32的较少.求人不如求己,索性自己开 ...

  2. 100行代码实现HarmonyOS“画图”应用,eTS开发走起!

    本期我们给大家带来的是"画图"应用开发者Rick的分享,希望能给你的HarmonyOS开发之旅带来启发~ 介绍 2021年的华为开发者大会(HDC2021)上,HarmonyOS ...

  3. Sting -- byte[]互转

    1.String -->byte[] String str = "中国"; byte[] bys = str.getBytes(); Arrays.toString(bys) ...

  4. Java中会存在内存泄漏吗,请简单描述?

    为了搞清楚Java程序是否有内存泄露存在,我们首先了解一下什么是内存泄露:程序运行过程中会不断地分配内存空间:那些不再使用的内存空间应该即时回收它们,从而保证系统可以再次使用这些内存.如果存在无用的内 ...

  5. DWR是什么?有什么作用?

    DWR(Direct Web Remoting)是一个用于改善web页面与Java类交互的远程服务器端Ajax开源框架,可以帮助开发人员开发包含AJAX技术的网站. 它可以允许在浏览器里的代码使用运行 ...

  6. 模糊查询like语句该怎么写?

    第1种:在Java代码中添加sql通配符. string wildcardname = "%smi%"; list<name> names = mapper.selec ...

  7. ctfhub 双写绕过 文件头检查

    双写绕过 进入环境 上传一句话木马 上传路径感觉不对检查源代码 从此处可以看出需要双写绕过 使用bp抓包 此处这样修改即可双写绕过 使用蚁剑连接 即可找到flag 文件头检查 进入环境 上传一句话木马 ...

  8. SCTF 2018_Simple PHP Web

    SCTF 2018_Simple PHP Web 进入环境注意观察url http://www.bmzclub.cn:23627/?f=login.php 有点像是文件读取我们尝试读一下/etc/pa ...

  9. 原理图Checklist

    类别 描述 检视规则 原理图需要进行检视,提交集体检视是需要完成自检,确保没有低级问题. 检视规则 原理图要和公司团队和可以邀请的专家一起进行检视. 检视规则 第一次原理图发出进行集体检视后所有的修改 ...

  10. 我的python学习记_02

    流程控制 算术运算符: + 加(在字符串中拼接作用) - 减 * 乘 / 除 // 商 % 取余 ** 次幂 比较运算符: > 是否大于 >= 是否大于等于 < 是否小于 != 是否 ...