[英]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-節點js,sql
但是我只能通過phpmyadmin 4.0訪問我的數據庫,該如何解決呢?
編輯:下面的答案並不完全有效,因為重新啟動應用程序可以解決問題,但是我希望下面的答案可以幫助其他遇到類似問題的人。
轉到您的應用程序控制台,單擊nodejs應用程序,在其中添加mysql盒式磁帶。 完成后,您應該可以訪問vars。 我懷疑您為mysql創建了一個單獨的應用程序,而不是將其添加到現有節點中。
通過在默認的nodejs應用程序盒中創建一條簡單的快速路由,我能夠打印出所有變量:
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
在這里 ,以防您只想復制/粘貼。 如果您的node + express應用程序中存在MySQL盒式磁帶,那么您將打印出var,然后您的代碼應該可以正常工作。
我只是添加主機名,現在添加了端口
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
});
重新啟動對我有用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.