Je suis un noeud débutant. Voici le code que j’essaye d’exécuter avec le noeud mysql, mais il continue de me donner cette erreur:
error connecting: Error: ER_CON_COUNT_ERROR: Too many connections
::CODE::
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); } }); }
Comment dois-je re-concevoir le code ci-dessus pour l’exécuter avec succès?
D’abord, vous n’avez pas besoin de 1500 connexions pour insérer 1500 éléments. Supprimez ce code de votre boucle for.
Quelque chose comme ça:
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
Par défaut, MySQL n’accepte que 100 connexions simultanées max. Dans votre cas, vous créez ~ 1 500, l’erreur est donc normale. Vous pouvez augmenter cette valeur, mais le problème réside dans votre code.
Vous devriez utiliser une piscine à la place. Cela fera que le noeud crée un pool de connexions (je pense que la valeur par défaut est 10) et les laissera être partagées par vos requêtes:
var mysql = require('mysql'); var pool = mysql.createPool({ host : 'xxx.xxx.xxx.xxx', database : 'mydb', user : 'test', password : 'test' }); for (var i=0; i
Aussi, vous voudrez peut-être envisager d'utiliser une seule connexion et tout insérer en même temps. Vous pouvez voir dans cette réponse comment y parvenir.