4

知道如何从 NodeJs 连接到 Heroku 上的 Mysql ClearDB 吗?

我能够从 Navicat 连接到在 Heroku 上运行的 ClearDB Mysql,我什至创建了一个名为 t_users 的表。但是我在从 Heroku 连接 NodeJ 时遇到问题。

这是我的代码,非常简单:一切正常,直到它尝试连接到 MySQL

web.js:

var express = require("express");
var app = express();
app.use(express.logger());

var mysql      = require('mysql');
var connection = mysql.createConnection({
  host     : 'us-cdbr-east-04.cleardb.com',
  user     : '',
  password : '',
  database : ''
});

connection.connect();

app.get('/', function(request, response) {
  response.send('Hello World!!!! HOLA MUNDOOOOO!!!');
  connection.query('SELECT 1 + 1 AS solution', function(err, rows, fields) {
      if (err) throw err;

      response.send('The solution is: ', rows[0].solution);
    });
});

var port = process.env.PORT || 5000;
app.listen(port, function() {
  console.log("Listening on " + port);
});

这是我在命令行上运行时得到的:Heroku config

C:\wamp\www\Nodejs_MySql_Heroku>heroku config
=== frozen-wave-8356 Config Vars
CLEARDB_DATABASE_URL: mysql://b32fa719432e40:87de815a@us-cdbr-east-04.cleardb.com/heroku_28437b49d76cc53?reconnect=true
PATH:                 bin:node_modules/.bin:/usr/local/bin:/usr/bin:/bin

这是日志: http ://d.pr/i/cExL

知道如何从 NodeJs 连接到 Heroku 上的 Mysql ClearDB 吗?谢谢

4

5 回答 5

6

尝试这个。希望对你有帮助

mysql://b32fa719432e40:87de815a@us-cdbr-east-04.cleardb.com/heroku_28437b49d76cc53?reconnect=true

var connection = mysql.createConnection({
  host     : 'us-cdbr-east-04.cleardb.com',
  user     : 'b32fa719432e40',
  password : '87de815a',
  database : 'heroku_28437b49d76cc53'
});

使用此详细信息并将其连接到 mySQL 工作台,然后导入您的 localhost db

于 2016-09-01T11:29:09.637 回答
3

基本代码没问题,我错过了一些 NodeJS 代码。

我做了一个视频,解释了如何在 Heroku 服务器上使用 NodeJS 连接到 MySql,看看:

http://www.youtube.com/watch?v=2OGHdii_42s

这是您想查看的代码:

https://github.com/mescalito/MySql-NodeJS-Heroku

于 2013-08-23T23:06:14.900 回答
2

createConnections accepts config as well as connectionString.

export function createConnection(connectionUri: string | ConnectionConfig): Connection;

So below solution would work.

var connection = mysql.createConnection('mysql://b32fa719432e40:87de815a@us-cdbr-east-04.cleardb.com/heroku_28437b49d76cc53?reconnect=true);

or you can set the connection url in environment variable DATABASE_URL

var connection = mysql.createConnection(process.env.DATABASE_URL);
于 2019-10-18T08:24:42.260 回答
1

一个应该需要使用池连接进行数据库连接来处理更好的mysql并发请求,如下所示

var pool = mysql.createPool({
    connectionLimit : 100,
    host : 'us-cdbr-iron-east-05.cleardb.net',
    user : 'b5837b0f1d3d06',
    password : '9d9ae3d5',
    database : 'heroku_db89e2842543609',
    debug : 'false'
});

只是因为池自己维护了 connection.release() ,所以您不必费心在哪里需要释放连接。

另一方面,您应该需要提供我在代码中提到的用户、密码和数据库名称。当你从 heroku 获得配置时,你会得到一个 cleardb 数据库名称。单击清除数据库数据库按钮后,您将找到用户名和密码。要获取数据库 url,您必须在终端中运行以下命令,如下所示;heroku login heroku app -all(它显示应用列表名称) heroku config --app appname(它将提供数据库 url)。

休息一下,您需要担心,只需将所有依赖项添加到您的 package.json 中,然后再推送到 heroku master。之后,您将 nodejs 应用程序部署到 heroku 服务器就没有问题了。

于 2017-09-23T11:46:54.877 回答
0

查看日志时间戳,您的连接似乎正在超时。为“getConnection”创建一个包装器,检查连接健康并在必要时重新建立,或者尝试使用 mysql 连接池功能,它可以为您做到这一点。

于 2013-08-23T19:10:06.070 回答