连接池
首先这个错很明显就是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