1

I am trying to connect MySQL database which is located in client machine, trying to give its IP4 address also trying to give global IP. But unsuccessful.

Do we need to use cleardb only or how to achieve this if its possible?

Coming back from my earlier question:

Ip4address not working for node-mysql connection ubuntu

I solved the issue of global connection but struck with the deployment now with heroku.

I am following this mysql for nodejs

The hostname currently is: 192.1683.3.72 which is shared across in our LAN network. Everybody use to connect with this now.

Global IP is something xxx.xxx.xxx.xxx

My connection code looks like this:

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : '192.168.3.72',
  user     : 'root',
  password : 'xxx',
  ...
});

After deployment i get error as : using heroku logs -t

2015-05-22T05:23:12.021430+00:00 app[web.1]: conDB =>  { host: '192.168.3.72',
2015-05-22T05:23:12.021332+00:00 app[web.1]:   code: 'ETIMEDOUT',
2015-05-22T05:23:12.021335+00:00 app[web.1]:   fatal: true }
2015-05-22T05:23:12.021432+00:00 app[web.1]:   user: 'root',
2015-05-22T05:23:12.021435+00:00 app[web.1]:   password: 'xxxx',
2015-05-22T05:23:12.021433+00:00 app[web.1]:   database: 'test',
2015-05-22T05:23:12.021813+00:00 app[web.1]: mysql
2015-05-22T05:23:12.021436+00:00 app[web.1]:   port: '3306' }
2015-05-22T05:23:12.021831+00:00 app[web.1]: Reconnecting mysql
2015-05-22T05:23:18.413926+00:00 heroku[web.1]: Idling
2015-05-22T05:23:18.414507+00:00 heroku[web.1]: State changed from up to down
2015-05-22T05:23:20.920191+00:00 heroku[web.1]: Stopping all processes with SIGTERM
2015-05-22T05:23:22.462124+00:00 heroku[web.1]: Process exited with status 143
2015-05-22T05:53:42.632728+00:00 heroku[web.1]: Unidling
2015-05-22T05:53:42.634780+00:00 heroku[web.1]: State changed from down to starting
2015-05-22T05:53:47.385022+00:00 heroku[web.1]: Starting process with command `node app.js`
2015-05-22T05:53:49.331466+00:00 app[web.1]: Detected 512 MB available memory, 512 MB limit per process (WEB_MEMORY)
2015-05-22T05:53:49.331482+00:00 app[web.1]: Recommending WEB_CONCURRENCY=1
2015-05-22T05:53:49.913038+00:00 app[web.1]: /app/node_modules/traceback/lib/frame.js:25
2015-05-22T05:53:49.913045+00:00 app[web.1]:   frame.type      = frame.getTypeName()
2015-05-22T05:53:49.913047+00:00 app[web.1]:                           ^
2015-05-22T05:53:49.913049+00:00 app[web.1]: TypeError: Cannot read property 'constructor' of undefined
2015-05-22T05:53:49.913051+00:00 app[web.1]:     at CallSiteGetTypeName (native)
2015-05-22T05:53:49.913052+00:00 app[web.1]:     at Object.make_easy [as make] (/app/node_modules/traceback/lib/frame.js:25:27)
2015-05-22T05:53:49.913054+00:00 app[web.1]:     at /app/node_modules/traceback/traceback.js:38:54
2015-05-22T05:53:49.913055+00:00 app[web.1]:     at Array.map (native)
2015-05-22T05:53:49.913057+00:00 app[web.1]:     at traceback (/app/node_modules/traceback/traceback.js:38:16)
2015-05-22T05:53:49.913059+00:00 app[web.1]:     at Object.<anonymous> (/app/BusinessLogicLayer/event.js:8:13)
2015-05-22T05:53:49.913060+00:00 app[web.1]:     at Module._compile (module.js:460:26)
2015-05-22T05:53:49.913062+00:00 app[web.1]:     at Object.Module._extensions..js (module.js:478:10)
2015-05-22T05:53:49.913063+00:00 app[web.1]:     at Module.load (module.js:355:32)
2015-05-22T05:53:49.913064+00:00 app[web.1]:     at Function.Module._load (module.js:310:12)
2015-05-22T05:53:50.665839+00:00 heroku[web.1]: State changed from starting to crashed
2015-05-22T05:53:50.655887+00:00 heroku[web.1]: Process exited with status 1
2015-05-22T05:53:50.666690+00:00 heroku[web.1]: State changed from crashed to starting
2015-05-22T05:53:54.396236+00:00 heroku[web.1]: Starting process with command `node app.js`
2015-05-22T05:53:55.957715+00:00 app[web.1]: Detected 512 MB available memory, 512 MB limit per process (WEB_MEMORY)
2015-05-22T05:53:55.957797+00:00 app[web.1]: Recommending WEB_CONCURRENCY=1
2015-05-22T05:53:56.481815+00:00 app[web.1]: /app/node_modules/traceback/lib/frame.js:25
2015-05-22T05:53:56.481819+00:00 app[web.1]:   frame.type      = frame.getTypeName()
2015-05-22T05:53:56.481821+00:00 app[web.1]:                           ^
2015-05-22T05:53:56.481823+00:00 app[web.1]: TypeError: Cannot read property 'constructor' of undefined
2015-05-22T05:53:56.481824+00:00 app[web.1]:     at CallSiteGetTypeName (native)
2015-05-22T05:53:56.481826+00:00 app[web.1]:     at Object.make_easy [as make] (/app/node_modules/traceback/lib/frame.js:25:27)
2015-05-22T05:53:56.481827+00:00 app[web.1]:     at /app/node_modules/traceback/traceback.js:38:54
2015-05-22T05:53:56.481829+00:00 app[web.1]:     at Array.map (native)
2015-05-22T05:53:56.481831+00:00 app[web.1]:     at traceback (/app/node_modules/traceback/traceback.js:38:16)
2015-05-22T05:53:56.481832+00:00 app[web.1]:     at Object.<anonymous> (/app/BusinessLogicLayer/event.js:8:13)
2015-05-22T05:53:56.481833+00:00 app[web.1]:     at Module._compile (module.js:460:26)
2015-05-22T05:53:56.481835+00:00 app[web.1]:     at Object.Module._extensions..js (module.js:478:10)
2015-05-22T05:53:56.481836+00:00 app[web.1]:     at Module.load (module.js:355:32)
2015-05-22T05:53:56.481838+00:00 app[web.1]:     at Function.Module._load (module.js:310:12)
2015-05-22T05:53:57.223514+00:00 heroku[web.1]: Process exited with status 1
2015-05-22T05:53:57.232600+00:00 heroku[web.1]: State changed from starting to crashed
2015-05-22T05:53:58.701816+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/" host=xxx.herokuapp.com request_id=8cb65519-461b-4618-9b0e-fa2ffc6e2c52 fwd="123.201.255.186" dyno= connect= service= status=503 bytes=
2015-05-22T05:53:59.630499+00:00 heroku[router]: at=error code=H10 desc="App crashed" method=GET path="/favicon.ico" host=xxx.herokuapp.com request_id=1cc626ed-bb81-4f9c-87ba-b82fc7edac54 fwd="123.201.255.186" dyno= connect= service= status=503 bytes=
2015-05-22T06:34:06.732088+00:00 heroku[api]: Deploy cfbef7c by user@xxx.com

I have one more addition question along with this:

I am also using gulp, do i need to have gulp command before node app.js in my Procfile or do i need to deploy the local builded copies to heroku server as i have ignored the files in git

Community
  • 1
  • 1
Mithun Shreevatsa
  • 3,588
  • 9
  • 50
  • 95
  • Can you post some more information in regards to: What does your connection code look like (omitting any sensitive information)? Are other external services able to access the MySQL database/are you certain the client machine is set up to allow external access to the database? – Cody Haines May 22 '15 at 06:58
  • @Cody Haines, please check my question - i have edited and re-posted – Mithun Shreevatsa May 22 '15 at 07:21
  • To answer your second question: Yes you should have any sort of necessary build commands *before* your node command, though that doesn't seem to be causing problems in this situation. – Cody Haines May 22 '15 at 07:25
  • cool - u mean i can have my procfile as web : gulp && node app.js? If so, i have the same now :-) What about my 1st question plz :-) – Mithun Shreevatsa May 22 '15 at 07:27

1 Answers1

0

To call an local database is not possible from the server as it will be related to that particular service.

And if it still needs to be called, then we must have a separate server with an global IP provided also need to check with the firewall settings if external connections are allowed.

So i was able to manage with clearDB an Mysql app of heroku itself for time being.

The connection string looks similar as follows:

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'us-xxx-xxx-xxx-02.cleardb.net',
  user     : 'xxxxxxxx',
  password : 'yyyyyyyy',
  database : 'heroku_xxxxxxxxxxxx'
  ...
});

Also handled connection disconnecting frequently with the below code:

con.on('error', function(err) {
    console.log('db error', err);
    if(err.code === 'PROTOCOL_CONNECTION_LOST') { // Connection to the MySQL server is usually
        console.log("Connection timeout, so Reconnecting");
      scope.initDBConn();                         // lost due to either server restart, or a
    } else {                                      // connnection idle timeout (the wait_timeout
      throw err;                                  // server variable configures this)
    }
});

Everything was working fine till last friday, but again facing the problem without any changes made, the error is as same as above:

2015-05-22T14:19:09.407569+00:00 app[web.1]: mysql connection established
2015-05-22T14:19:19.320380+00:00 heroku[web.1]: Idling
2015-05-22T14:19:19.320953+00:00 heroku[web.1]: State changed from up to down
2015-05-22T14:19:21.387624+00:00 heroku[web.1]: Stopping all processes with SIGTERM
2015-05-22T14:19:22.678786+00:00 heroku[web.1]: Process exited with status 143
2015-05-25T09:30:54.056759+00:00 heroku[web.1]: Unidling
2015-05-25T09:30:54.057097+00:00 heroku[web.1]: State changed from down to starting
2015-05-25T09:30:59.087828+00:00 heroku[web.1]: Starting process with command `node app.js`
2015-05-25T09:31:01.581987+00:00 app[web.1]: Recommending WEB_CONCURRENCY=1
2015-05-25T09:31:01.581960+00:00 app[web.1]: Detected 512 MB available memory, 512 MB limit per process (WEB_MEMORY)
2015-05-25T09:31:02.270675+00:00 app[web.1]: /app/node_modules/traceback/lib/frame.js:25
2015-05-25T09:31:02.270681+00:00 app[web.1]:   frame.type      = frame.getTypeName()
2015-05-25T09:31:02.270684+00:00 app[web.1]:                           ^
2015-05-25T09:31:02.270686+00:00 app[web.1]: TypeError: Cannot read property 'constructor' of undefined
2015-05-25T09:31:02.270689+00:00 app[web.1]:     at Object.make_easy [as make] (/app/node_modules/traceback/lib/frame.js:25:27)
2015-05-25T09:31:02.270687+00:00 app[web.1]:     at CallSiteGetTypeName (native)
2015-05-25T09:31:02.270691+00:00 app[web.1]:     at Array.map (native)
2015-05-25T09:31:02.270700+00:00 app[web.1]:     at Function.Module._load (module.js:310:12)
2015-05-25T09:31:02.270696+00:00 app[web.1]:     at Module._compile (module.js:460:26)
2015-05-25T09:31:02.270699+00:00 app[web.1]:     at Module.load (module.js:355:32)
2015-05-25T09:31:02.270690+00:00 app[web.1]:     at /app/node_modules/traceback/traceback.js:38:54
2015-05-25T09:31:02.270693+00:00 app[web.1]:     at traceback (/app/node_modules/traceback/traceback.js:38:16)
2015-05-25T09:31:02.270695+00:00 app[web.1]:     at Object.<anonymous> (/app/BusinessLogicLayer/event.js:8:13)
2015-05-25T09:31:02.270697+00:00 app[web.1]:     at Object.Module._extensions..js (module.js:478:10)
2015-05-25T09:31:03.085549+00:00 heroku[web.1]: Process exited with status 1
2015-05-25T09:31:03.095682+00:00 heroku[web.1]: State changed from starting to crashed
2015-05-25T09:31:03.096769+00:00 heroku[web.1]: State changed from crashed to starting
2015-05-25T09:31:06.546237+00:00 heroku[web.1]: Starting process with command `node app.js`
2015-05-25T09:31:08.392489+00:00 app[web.1]: Detected 512 MB available memory, 512 MB limit per process (WEB_MEMORY)
Mithun Shreevatsa
  • 3,588
  • 9
  • 50
  • 95