gpt4 book ai didi

mysql - 是否可以将本地 mysql 与 heroku 上的 nodejs 连接?

转载 作者:行者123 更新时间:2023-11-30 22:43:28 25 4
gpt4 key购买 nike

我正在尝试连接位于客户端机器上的 MySQL 数据库,尝试提供其 IP4 地址,同时尝试提供全局 IP。但没有成功。

我们是否只需要使用 cleardb,或者如果可能的话如何实现?

回到我之前的问题:

Ip4address not working for node-mysql connection ubuntu

我解决了全局连接的问题,但现在使用 heroku 进行部署。

我正在关注 this用于 nodejs 的 mysql

当前的主机名是:192.1683.3.72,它在我们的 LAN 网络中共享。现在每个人都习惯与此联系。

全局 IP 是 xxx.xxx.xxx.xxx

我的连接代码如下所示:

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

部署后出现错误:使用 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 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

最佳答案

无法从服务器调用本地数据库,因为它与特定服务相关。

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.

所以我暂时能够使用 clearDB 管理 heroku 本身的 Mysql 应用程序。

连接字符串如下所示:

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

还使用以下代码处理了频繁断开连接的问题:

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)
}
});

直到上周五一切正常,但是没有做任何更改再次遇到问题,错误与上述相同:

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)

关于mysql - 是否可以将本地 mysql 与 heroku 上的 nodejs 连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30390219/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com