通过node-js-app连接openshift中的mysql数据库时出错
Error while connecting to mysql database in openshift via node js app
我有一个带有express的node-js应用程序,它部署在openshift上。我已经通过phpmyadmin 4.0插件创建了数据库。我可以连接到数据库,但当我进行任何查询时,它都会抛出错误ECONNREFUSED。
我在浏览器上得到了这个错误的响应,如下所示,
{"status":false,"error":{"code":"ECONNREFUSED","errno":"ECONNREFUSED","syscall":"connect","fatal":true}}
我的应用程序的代码是这样的,
var connection = mysql.createConnection({
host : process.env.OPENSHIFT_MYSQL_DB_HOST,
user : process.env.OPENSHIFT_MYSQL_DB_USERNAME,
password : process.env.OPENSHIFT_MYSQL_DB_PASSWORD,
database : process.env.OPENSHIFT_GEAR_NAME
});
connection.connect();
console.log("connected to login database");
var strQuery="insert into login values('"+req.body.uname+"','"+req.body.password+"','"+req.body.name+"','"+req.body.mobile+"');";
connection.query( strQuery, function(err){
if(err) {
res.json({
"status":false,
"error":err
});
res.end();
}else{
res.json({"status":true });
res.end();
}
});
connection.end();
我在这里找到了一个答案连接ECONNREFUSED-node js,sql
但我只能通过phpmyadmin 4.0访问我的数据库,我该如何解决这个问题?
EDIT:下面的答案并不完全有效,因为重新启动应用程序解决了问题,但我希望下面的答案可以帮助其他人解决类似的问题
转到应用程序控制台,单击nodejs应用程序,在那里添加mysql插件。一旦你这样做了,你应该可以访问vars。我怀疑您为mysql创建了一个单独的应用程序,而不是将其添加到现有的节点中。
我能够通过在默认的nodejs应用程序墨盒中创建一个简单的express路由来打印出所有的变量:
self.routes['/vars'] = function(req, res) {
var html = "<html><body>Host: " + process.env.OPENSHIFT_MYSQL_DB_HOST + "<br />";
html += "Port: " + process.env.OPENSHIFT_MYSQL_DB_PORT + "<br />";
html += "User: " + process.env.OPENSHIFT_MYSQL_DB_USERNAME + "<br />";
html += "Pass: " + process.env.OPENSHIFT_MYSQL_DB_PASSWORD + "<br />";
html += "Sock: " + process.env.OPENSHIFT_MYSQL_DB_SOCK + "<br />";
html += "URL: " + process.env.OPENSHIFT_MYSQL_DB_URL + "<br />";
html += "</body></html>"
res.send(html);
}
返回命中http://<openshift_application_url>/vars
(这对您来说会有所不同):
Host: 127.6.20.2
Port: 3306
User: adminPAkSHvw
Pass: d7DX9ATPh4uG
Sock: undefined
URL: mysql://adminPAkSHvw:d7DX9ATPh4uG@127.6.20.2:3306/
完整的server.js
在这里,以防您只想尝试复制/粘贴。如果MySQL插件存在于node+express应用程序中,那么您将打印出vars,然后您的代码就可以工作了。
我只是添加了主机名,现在我添加了端口
var connection = mysql.createConnection({
host : process.env.OPENSHIFT_MYSQL_DB_HOST,
port :process.env.OPENSHIFT_MYSQL_DB_PORT,
user : process.env.OPENSHIFT_MYSQL_DB_USERNAME,
password : process.env.OPENSHIFT_MYSQL_DB_PASSWORD,
database : process.env.OPENSHIFT_GEAR_NAME
});
重新启动对我来说很有效。
相关文章:
- 将输入字段中的文本提交到我的数据库,同时将其添加到我的列表中
- javascript中的数组出错
- 节点Js:How to catch a“;没有这样的文件或目录“;读取线模块出错
- 如何通过php页面将数据库值检索到jquery自动完成框中
- 使用javascript从数据库中添加表
- 通过CSV文件上载更新数据库表
- 使用Javascript将多条记录插入SQLite数据库时出错
- 尝试在移动优先应用程序中从 SQL 数据库获取数据时出错
- 将数据插入数据库express/mongodb应用程序时出错
- 将数据从异步请求添加到 WebSQL 数据库时出错
- 从mongoldb mapReduce访问数据库变量时出错
- 使用javascript分析csv数据库时出错
- 通过node-js-app连接openshift中的mysql数据库时出错
- 猫鼬连接数据库时出错
- 使用ajax json c#将数据从数据库加载到gridview时出错
- 在sqlite中使用jquery验证数据库时出错
- 在Firebase数据库中单击AlertDialog以设置值时出错
- 从phoneGap从SQlite数据库检索值时出错
- 在ajax插入数据库时出错
- 使用下拉菜单更改数据库值时出错