Search code examples
javascriptmysqlnode.jsnode-mysql

Solving node-mysql initialization errors?


I am attempting to use the node-mysql module which can be found here. I've used this before without any issue but on a recent project came into a strange issue of it never being able to connect to the database. I know my login credentials are correct as they work via normal MySQL command line.

However, I will always receive errors when the node-mysql module attempts to connect. This is the code I have so far, with debugging enabled.

var connection = mysql.createConnection({
    host     : 'localhost',
    user     : 'root',
    password : 'password',
    database : 'Coachletic',
    pool     : { maxConnections: 50, maxIdleTime: 30},
    debug    : true
});

connection.connect(function(err){
    if(!err) {
        console.log("MySQL Database is connected.");
    } else {
        console.log(err);
        console.log("Error connecting to MySQL Database.");  
    }
});

global.connection = connection;

This is the output from console:

<-- HandshakeInitializationPacket
HandshakeInitializationPacket {
  protocolVersion: 10,
  serverVersion: '5.6.19-0ubuntu0.14.04.1',
  threadId: 64,
  scrambleBuff1: <Buffer 65 3f 48 2e 4d 78 38 49>,
  filler1: <Buffer 00>,
  serverCapabilities1: 63487,
  serverLanguage: 8,
  serverStatus: 2,
  serverCapabilities2: 32895,
  scrambleLength: 21,
  filler2: <Buffer 00 00 00 00 00 00 00 00 00 00>,
  scrambleBuff2: <Buffer 47 68 54 4e 6b 4e 25 6a 6a 54 46 42>,
  filler3: <Buffer 00>,
  pluginData: 'mysql_native_password',
  protocol41: true }

--> ClientAuthenticationPacket
ClientAuthenticationPacket {
  clientFlags: 455631,
  maxPacketSize: 0,
  charsetNumber: 33,
  filler: undefined,
  user: 'root',
  scrambleBuff: <Buffer 40 de 4c 94 3b c4 6f 15 0d 1c 49 12 04 46 af 64 d9 4d 41 76>,
  database: 'Coachletic',
  protocol41: true }

{ [Error: Handshake inactivity timeout]
  code: 'PROTOCOL_SEQUENCE_TIMEOUT',
  fatal: true,
  timeout: undefined }
Error connecting to MySQL Database.

Tried searching for solutions for this error but did not come up with anything useful.


Solution

  • After doing some more digging it appears that this is an issue associated with Node 4.2.0. This is the reference thread: https://github.com/felixge/node-mysql/issues/1236

    The fix involved changing this._idleTimeout to -1 from undefined in the lib/protocol/sequences/Sequence.js file.