太多连接Nodejs + mysql2 / promise

布拉迪米尔·梅德拉诺·巴尔加斯

我正在使用nodejs + mysql2在proyect中工作,有时我收到错误“连接太多”

我的联系:

import {createPool, Pool} from 'mysql2/promise';

export async function connect(): Promise < any > {
  const connection: Pool = await createPool({
    host: 'localhost',
    port: 3306,
    user: 'root',
    password: '',
    database: 'mendozarq',
    connectionLimit: 10
  });
  return connection;
}

控制器:

import { Response, Request } from 'express';
import { FieldPacket, Pool } from 'mysql2/promise';

import { connect } from './../../classes/database';
import { Personal } from './../../models/personal.interface';

export const getAllPersonal = async (req: Request, res: Response) => {
    try {
        const conn: Pool = await connect();

        const [personal]: [any[], FieldPacket[]] = await conn.query('SELECT * FROM personal ORDER BY creadoEn DESC');
        conn.end();

        return res.status(200).json(personal);

    } catch (error) {
        return res.status(400).json({
            error
        });
    }
}

所以,我的问题是我必须使用createConnection而不是createPool,或者我只需要创建一个conn实例。

从我的草坪上离开

您只应打createPool一次电话,然后再从池中选择一次。

因此,它应该看起来像这样。创建一个存储池的常量。然后在函数中(如果该池已经存在)返回该池而不调用createPool如果不存在,则将调用createPool并返回已创建的池。

import {createPool, Pool} from 'mysql2/promise';

const globalPool: Pool | undefined = undefined;

export async function connect(): Promise <Pool> {

  // If the pool was already created, return it instead of creating a new one.
  if(globalPool) {
    return globalPool;
  }

  // If we have gotten this far, the pool doesn't exist, so lets create one.
  globalPool = await createPool({
    host: 'localhost',
    port: 3306,
    user: 'root',
    password: '',
    database: 'mendozarq',
    connectionLimit: 10
  });
  return globalPool;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用mysql2 / promise时如何关闭sql连接?

如何通过 mysql2/promise 连接对象交叉文件

如何使用Mysql2 Promise终止数据库连接?

mysql2插入值nodejs

如何避免在mysql2模式下出现太多连接错误

单独文件中的NodeJS mysql2连接即将停止

如何使用NodeJs MySql2库异步/等待捕获连接错误

使用现有 (mysql2) 连接创建 Knex 实例

nodejs mysql2异步错误(中间值)不可迭代

NodeJS mysql2“错误:未选择数据库”

无法将“ mysql2 / promise”导入Node.js上的ES模块(MJS)13/14

可以通过mysql工作台连接到远程mysql数据库,但不能通过mysql2(NodeJS)连接

MySQL中的连接错误太多

考虑NodeJS的MySQL和MySQL2有什么区别

NodeJS MySQL Promise返回未定义

Mysql2 :: Error :: ConnectionError:无法连接到“ mysql”上的MySQL服务器(111“连接被拒绝”)

与Sidekiq如何防止“ Mysql2 :: Error:此连接正在使用”

如何在 http 服务器开始接受请求之前设置 mysql2 连接?

如何使用mysql2 gem配置ActiveRecord数据库连接

MongoDB与nodejs的连接返回promise <pending>

Mac OSX / MySQL 5.6.19上的“ Mysql2 :: Error:在查询过程中失去与MySQL服务器的连接”

如何使用Ruby和mysql2 gem通过TLS1.2连接mysql数据库

MYSQL太多连接错误不会消失

MySQL 5.7:微调太多连接错误

使用AWS RDS在Heroku App上获取Mysql2 :: Error(SSL连接错误:ASN:错误的其他签名确认)

NodeJS:for循环和promise

在NodeJS中测试Promise

nodejs Promise序列问题

Nodejs MySQL连接超时