98 votes

Impossible de mettre en file d'attente Handshake après avoir invoqué quit

J'ai mis en œuvre le code suivant :

module.exports = {
    getDataFromUserGps: function(callback)
    {
        connection.connect();
        connection.query("SELECT * FROM usergps", 
            function(err, results, fields) {
                if (err) return callback(err, null);
                return callback(null, results);
            }
        ); 
        connection.end();
    },
    loginUser: function(login, pass, callback)
    {
        connection.connect();
        connection.query(
            "SELECT id FROM users WHERE login = ? AND pass = ?",
            [login, pass],
            function(err, results, fields) 
            {
                if (err) return callback(err, null);
                return callback(null, results);
            }
        ); 
        connection.end();
    },
    getUserDetails: function(userid, callback)
    {
        connection.connect();
        connection.query(
            "SELECT * FROM userProfilDetails LEFT JOIN tags ON userProfilDetails.userId = tags.userId WHERE userProfilDetails.userid = ?",
            [userid],
            function(err, results, fields)
            {
                if (err) return callback(err, null);
                return callback(null, results);
            }
        );
        connection.end();
    },
    addTags: function(userId, tags)
    {
        connection.connect();
        connection.query(
            "INSERT INTO tag (userId, tag) VALUES (?, ?)",
            [userId, tags],
            function(err, results, fields)
            {
                if (err) throw err;
            }
        )
        connection.end();
    }
}

Tout fonctionne très bien, mais seulement pour la première fois. Si je veux "utiliser" la requête pour la deuxième fois, j'obtiens l'erreur suivante :

Cannot enqueue Handshake after invoking quit

J'ai essayé de ne pas .end() des connexions mais ça n'a pas aidé.

Comment puis-je résoudre ce problème ?

0voto

Une petite recherche a montré que je ne fermais pas du tout la connexion. J'ai donc ajouté ce code avant d'ouvrir la connexion et lorsque j'avais fini de manipuler la base de données.

connection.end()
connection = mysql.createConnection(
  // database connection details
) 
connection.connect(function (err) {
  if (!err) {
    console.log("Connected!");
    var sql = `Select something from my_heart;`
    connection.query(sql, function (err, result) {
      if (!err) {
        console.log("1 record inserted");
        res.send("Recieved")
      } else {
        console.log(err.sqlMessage)
        res.send("error")
      }
    });
  }
})

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X