使用node做大量insert时报错:ER_CON_COUNT_ERROR: Too many connections

连接池

首先这个错很明显就是mysql给的连接池不够,所以第一种方式就是改mysql连接池,具体做法网上查下就知道了,很简单;但是这种做法治标不治本,就算给 一万个连接 如果数据量过大还是会出现此问题,所以有了下面的解决方案

报错代码

不考虑代码小毛病,我这里循环做 insert 的数据大概有9000+,而实际我的数据库开放的只有300个连接池,所以肯定报以上错误

app.post('/insert',(req,res)=>{
		let data = req.body;
		let sql = 'INSERT INTO shi_temp_tab (data_type,person_type) VALUES(?,?)';
		data.forEach((item)=>{
			let arr = item.position_name.split('、');
			arr.forEach((it)=>{
				let sql_data = [item.data_type,it];
// sql_data的数据格式
//['内部车牌',2]
			 	base(sql,sql_data,(result)=>{
					console.log(result)
				})			
			})
		})
		res.send('success');
	})

正确写法

这种写法实际是mysql的批量插入的一种方式

// 数据插入
	app.post('/insert',(req,res)=>{
		let data = req.body;
		let sql = "INSERT INTO shi_temp_tab (data_type,person_type) VALUES ?";
		let values = [];
		
		data.forEach((item)=>{
			let arr = item.position_name.split('、');
			arr.forEach((it)=>{
				let sql_data = [item.data_type,it];
			 	values.push(sql_data);	
			})
		})
// values 的数据格式
//[['内部车牌',3],['内部车牌',2]]
		base(sql,[values],(result)=>{
			res.send(result);
		})
	})

参考:
githup

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值