簡體   English   中英

通過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-節點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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM