gpt4 book ai didi

javascript - ER_CON_COUNT_ERROR : Too many connections error in node-mysql

转载 作者:可可西里 更新时间:2023-11-01 06:32:06 25 4
gpt4 key购买 nike

我是 Node 初学者。以下是我尝试使用 Node 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);
}
});
}

我应该如何重新设计上面的代码才能成功执行呢?

最佳答案

默认情况下,MySQL 最多只接受 100 个并发连接。在你的情况下,你正在创建 ~1500 所以你得到的错误是正常的。您可以增加此值,但这里的问题出在您的代码中。

您应该改用池。这将使 Node 创建一个连接池(我认为默认值为 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();
});
});
}

您可能还想考虑使用单个连接并一次插入所有内容。你可以在this中看到回答如何实现这一点。

关于javascript - ER_CON_COUNT_ERROR : Too many connections error in node-mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27746512/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com