简体   繁体   English

是否可以在heroku上将本地mysql与nodejs连接起来?

[英]Is it possible to connect local mysql with nodejs on heroku?

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. 我正在尝试连接位于客户端计算机中的MySQL数据库,尝试提供其IP4地址,还尝试提供全局IP。 But unsuccessful. 但是没有成功。

Do we need to use cleardb only or how to achieve this if its possible? 我们是否仅需要使用cleardb或在可能的情况下如何实现?

Coming back from my earlier question: 回到我之前的问题:

Ip4address not working for node-mysql connection ubuntu ip4address不适用于节点-mysql连接Ubuntu

I solved the issue of global connection but struck with the deployment now with heroku. 我解决了全局连接的问题,但是现在使用heroku进行了部署。

I am following this mysql for nodejs 我正在为nodejs关注 mysql

The hostname currently is: 192.1683.3.72 which is shared across in our LAN network. 主机名当前为: 192.1683.3.72 ,该主机名在我们的LAN网络中共享。 Everybody use to connect with this now. 现在大家都用来与此联系。

Global IP is something xxx.xxx.xxx.xxx 全局IP是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 部署后,我收到以下错误消息:使用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 我也在使用gulp,在Procfile中的节点app.js之前是否需要gulp命令,还是因为我已忽略git中的文件,所以需要将本地构建的副本部署到heroku服务器

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. 而且,如果仍然需要调用它,那么我们必须提供具有全局IP的单独服务器,并且还需要检查防火墙设置是否允许外部连接。

So i was able to manage with clearDB an Mysql app of heroku itself for time being. 因此,我能够暂时使用clearDB管理heroku本身的Mysql应用程序。

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)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM