NodeJS无法打开MySQL连接端口

时间:2018-03-23 13:50:14

标签: mysql node.js npm

我试图使用循环将一些数据插入到我的mysql数据库中。如您所见,我每个周期打开/插入/关闭一次连接。但是,似乎我的代码在循环后没有重新打开我的数据库连接。

源代码:

var MySQLModule = require('mysql');
//var SleepModule = require('sleep');

var MySQL_Connection = MySQLModule.createConnection({host: '10.0.0.254', user: 'User', password: 'Password', database: 'Air_Pollution_Project'});

var i = 0;
while (i < 5) {
  MySQL_Connection.connect();
  //SleepModule.sleep(0);
  MySQL_Connection.query('INSERT INTO Air_Pollution_Reading_Record (Station_ID, Air_Pollution_Reading_Value) VALUES (2, 666)');
  MySQL_Connection.end();
  i++
};

结果:

events.js:183
      throw er; // Unhandled 'error' event
      ^

Error: Cannot enqueue Handshake after invoking quit.

我是否正确打开了连接?我该怎么办。

2 个答案:

答案 0 :(得分:0)

您无需像这样继续打开和关闭连接。我不确定它是否特别导致您的问题,但您可以尝试将其移出循环。将代码包装在try catch中可能会显示有关错误的更多信息

var i = 0;

try {
    MySQL_Connection.connect();

    while (i < 5) {
      MySQL_Connection.query('INSERT INTO Air_Pollution_Reading_Record (Station_ID, Air_Pollution_Reading_Value) VALUES (2, 666)');
      i++
    };

    MySQL_Connection.end(); 

}catch(err){
    console.log(err)
}

答案 1 :(得分:0)

每次需要将数据插入批量并在查询执行后关闭连接

,而不是打开和关闭mysql端口

可能重复:Link

有用的链接:How to insert bulk data into mysql using node js

MySQL_Connection.connect();
var sql = "INSERT INTO Air_Pollution_Reading_Record (Station_ID, Air_Pollution_Reading_Value) VALUES ?";
var values = [];
var i = 0;
while (i < 5) {
  var newArray = [2,666]; 
  values.push(newArray);
  i++
};

MySQL_Connection.query(sql, [values], function(err) {
    if (err) throw err;
    MySQL_Connection.end();
});