我想知道如何从NodeJ连接到Heroku上的Mysql ClearDB?
我能够从Navicat连接到Heroku上运行的ClearDB Mysql,我甚至创建了一个名为t_users的表。但是我从Heroku的NodeJs连接时遇到了问题。
这是我的代码,它非常简单:一切正常,直到它尝试连接到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
这是LOG: http://d.pr/i/cExL
我想知道如何从NodeJ连接到Heroku上的Mysql ClearDB? 感谢
答案 0 :(得分:4)
试试这个。希望这会对你有所帮助
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
答案 1 :(得分:3)
基本代码还可以,我错过了一些NodeJS代码。
我做了一个视频,解释了如何在Heroku服务器上连接到MySqlusing NodeJS,看看:
http://www.youtube.com/watch?v=2OGHdii_42s
这是您想要查看的代码:
答案 2 :(得分: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'
});
这只是因为pool自己维护connection.release(),所以你不必费心去除你需要释放连接的地方。
另一方面,您应该提供我在代码中提到的用户,密码和数据库名称。 当您从heroku获得配置时,您将获得一个cleardb数据库名称。 单击清除数据库数据库按钮,您将找到用户名和密码。 要获取数据库URL,您必须在终端中运行以下命令,如下所示; heroku登录 heroku app -all(显示应用列表名称) heroku config --app appname(它将提供数据库URL)。
休息你需要担心,只需在推送到heroku master之前将所有依赖项添加到你的package.json中。 之后,将nodejs应用程序部署到heroku服务器没有问题。
答案 3 :(得分:1)
createConnections接受配置以及connectionString。
export function createConnection(connectionUri: string | ConnectionConfig): Connection;
因此下面的解决方案将起作用。
var connection = mysql.createConnection('mysql://b32fa719432e40:87de815a@us-cdbr-east-04.cleardb.com/heroku_28437b49d76cc53?reconnect=true);
或者您可以在环境变量DATABASE_URL
var connection = mysql.createConnection(process.env.DATABASE_URL);
答案 4 :(得分:0)
查看日志时间戳,您的连接似乎已超时。为“getConnection”创建一个包装器,用于检查连接运行状况并在必要时重新建立,或尝试使用mysql连接池功能,这可以为您完成。