BEGIN;

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

即:connection.end();

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

测试环境:

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

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

  1. /**
  2. * 数据库操作
  3. * author: yzChen 2014-5-6 21:58:57
  4. */
  5. var mysql = require('mysql');
  6. var pool = mysql.createPool({
  7. host: '127.0.0.1',
  8. user: 'root',
  9. password: 'root',
  10. database:'nodejs',
  11. port: 3306
  12. });
  13. exports.execSql = function(sql, fn) {
  14. pool.getConnection(function (err, conn) {
  15. conn.query(sql, function (err1, res1) {
  16. fn(err1, res1);
  17. });
  18. });
  19. }

3、调用时,就是util.execSql('your sql', function(err, res) { // your code })

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

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

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

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

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

只需要在

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

的后面添加

  1. 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. sql注入之简要注入

    #mysql简要注入流程 mysql注入简要流程如下图: 由于还没学习完先结合sqlilabs的第一关讲解信息收集的一部分和数据注入的information_schema的有据查询. #sqli-la ...

  2. ctf之Flask_fileUpload

    启动环境,显示如图: 直接f12产看源码信息: 大致意思是:使用python编写文件然后以图片格式上传系统会以ipython格式解析,就可获取flag. 编写python代码: import os o ...

  3. Spring Boot 多模块项目创建与配置 (转)

    转载:https://www.cnblogs.com/MaxElephant/p/8205234.html 最近在负责的是一个比较复杂项目,模块很多,代码中的二级模块就有9个,部分二级模块下面还分了多 ...

  4. java反射 java动态代理和cglib动态代理的区别

    java反射      https://blog.csdn.net/f2764052703/article/details/89311013 java 动态代理   https://blog.csdn ...

  5. SpringBoot 日志

    springboot日志简介 SpringBoot使用的日志是sl4j + logback,sl4j是抽象层,不做具体的实现.实现主要是logback来做.SpringBoot同时也整合了其他框架的日 ...

  6. ISR、OSR、AR 是什么?

    ISR:In-Sync Replicas 副本同步队列 OSR:Out-of-Sync Replicas AR:Assigned Replicas 所有副本 ISR是由leader维护,followe ...

  7. UML 中有哪些常用的图?

    UML 定义了多种图形化的符号来描述软件系统部分或全部的静态结构和动态结 构,包括:用例图(use case diagram).类图(class diagram).时序图(sequence diagr ...

  8. Java中的引用类型

    强引用(Strong) 就是我们平时使用的方式 A a = new A();强引用的对象是不会被回收的 软引用(Soft) 在jvm要内存溢出(OOM)时,会回收软引用的对象,释放更多内存 弱引用(W ...

  9. Java 中,Maven 和 ANT 有什么区别?

    虽然两者都是构建工具,都用于创建 Java 应用,但是 Maven 做的事情更多, 在基于"约定优于配置"的概念下,提供标准的 Java 项目结构,同时能为应用自 动管理依赖(应用 ...

  10. ACM - 最短路 - AcWing 851 spfa求最短路

    AcWing 851 spfa求最短路 题解 以此题为例介绍一下图论中的最短路算法 \(Bellman\)-\(Ford\) 算法.算法的步骤和正确性证明参考文章最短路径(Bellman-Ford算法 ...