ER_CON_COUNT_ERROR:node-mysql中的连接错误太多
我是一个节点初学者。 以下是我试图使用节点mysql执行的代码,但它不断给我这个错误:
error connecting: Error: ER_CON_COUNT_ERROR: Too many connections
::码::
var size = item.length;// size is ~1500 for (var i=0; i<size;i++) { var connection = mysql.createConnection({ host : 'xxx.xxx.xxx.xxx', database : 'mydb', user : 'test', password : 'test' }); connection.connect(function(err, callback) { if (err) { console.error('error connecting: ' + err.stack); return; } }); var entry = { id: item[i], time_created: Math.floor(Date.now() / 1000), time_created: Math.floor(Date.now() / 1000), price_range: 0 }; var query = connection.query('INSERT INTO mytable SET ?', entry, function(err, result, callback) { if(err) { console.log(err.message); } }); connection.end(function(err) { if(err) { console.log(err.message); } }); }
我应该如何重新devise上述代码才能成功执行它?
首先,您不需要1500个连接来插入1500个项目。 从for循环中移除该代码。
像这样的东西:
var size = item.length;// size is ~1500 var connection = mysql.createConnection({ host : 'xxx.xxx.xxx.xxx', database : 'mydb', user : 'test', password : 'test' }); connection.connect(function(err, callback) { if (err) { console.error('error connecting: ' + err.stack); return; } }); connection.end(function(err) { if(err) { console.log(err.message); } }); for (var i=0; i<size;i++) { var entry = { id: item[i], time_created: Math.floor(Date.now() / 1000), time_created: Math.floor(Date.now() / 1000), price_range: 0 }; var query = connection.query('INSERT INTO mytable SET ?', entry, function(err, result, callback) { if(err) { console.log(err.message); } }); };
MySQL默认只接受最多100个同时连接。 在你的情况下,你正在创造〜1500所以你得到的错误是正常的。 你可以增加这个值,但是这个问题在你的代码中。
你应该使用一个池。 这将使节点创build一个连接池(我认为默认值是10),让他们共享您的查询:
var mysql = require('mysql'); var pool = mysql.createPool({ host : 'xxx.xxx.xxx.xxx', database : 'mydb', user : 'test', password : 'test' }); for (var i=0; i<size;i++) { pool.getConnection(function(err, connection) { connection.query( 'INSERT INTO ...', function(err, rows) { connection.release(); }); }); }
您也可以考虑使用单个连接并一次插入所有内容。 你可以在这个答案中看到如何实现这一点。
- 你怎么用Axios发送图像到节点js?
- 将从createWriteStream创build的JSON文件拆分为Node中的多个JSON文件
- 在午夜重置variables/计数器的重复函数(moment.js,node.js)
- NodeJS – process.env.NODE_ENV条件在使用package.json脚本时不起作用
- 如何testing模块中的OpenCV nodejs绑定代码?
- 节点js:使用相同的参数名称在另一个函数内执行一个函数
- Mongodb聚合函数,具有group by和having子句
- 澄清Mockgoose /mongoose使用?
- 如何在页面加载中使用Javascript成功完成Ajax请求