搜尋

首頁  >  問答  >  主體

原標題:Heroku mysql 連線錯誤是什麼原因造成的? (嘗試將前端連接到後端 POST 請求)識別前端連接到後端時 Heroku mysql 連接錯誤的來源

{已解決}。新錯誤

Heroku 日誌錯誤:

Error: connect ECONNREFUSED 127.0.0.1:3306
2021-09-23T18:24:12.236657+00:00 app[web.1]: at TCPConnectWrap.afterConnect.          [as        oncomplete] (node:net:1146:16) {
2021-09-23T18:24:12.236658+00:00 app[web.1]: errno: -111,
2021-09-23T18:24:12.236658+00:00 app[web.1]: code: 'ECONNREFUSED',
2021-09-23T18:24:12.236658+00:00 app[web.1]: syscall: 'connect',
2021-09-23T18:24:12.236659+00:00 app[web.1]: address: '127.0.0.1',
2021-09-23T18:24:12.236659+00:00 app[web.1]: port: 3306,
2021-09-23T18:24:12.236659+00:00 app[web.1]: fatal: true

訊息/背景:

React js 前端(現在託管在 Netlifty 上) 使用 Express 和 MYSQL2 的 Javascript Node 後端(託管在 Heroku 上)

目標: 將 Neflifty 前端 POST 請求與 Heroku 後端連接,取得 POST 負載資料並將其插入 MYSQL 表中。

更新:2021 年 9 月 24 日

我已經完成了所有建議的事情。我已經使用clearDB 建立了一個新資料庫。新增它並在 mysql Workbench 中測試連接。建立了所需的表。更新了用於建立與新資料庫的連接的後端程式碼。檢查 Heroko 變數並確保它們正確反映到新資料庫中。現在有一個授權問題。 {已解決}

經過修正的新後端程式碼:


#
const express = require('express');

const app = express();

const port = process.env.Port || 8000

app.list en(port);
console.log(`server is listing on ${port}`);
超時


問題: 如果這在工作台上本地連接,如果將它們添加為變量,為什麼 Heroku 不會連接? {已回答}

新問題: 為什麼它應該使用環境時卻嘗試使用連接埠 8000?為什麼會超時?

對此的任何幫助將不勝感激。

P粉021553460P粉021553460351 天前691

全部回覆(1)我來回復

  • P粉610028841

    P粉6100288412023-12-14 09:46:11

    您無法連線到資料庫,因為 Heroku 上沒有執行任何資料庫執行個體。一旦您使用 Heroku CLI 推送程式碼,Heroku 就會為您設定一個 NodeJS 應用程序,但這並不意味著它也會為您設定資料庫。

    您可以透過 Heroku 的介面或 CLI 將資料庫新增至您的應用程式。從 CLI(我們將設定 ClearDB,但任何 MySQL 資料庫外掛程式都可以工作):

    heroku addons:create cleardb:ignite

    完成之後,您想要新的資料庫 URL(不是 localhost):

    heroku config | grep CLEARDB_DATABASE_URL

    最後一個指令的輸出將類似於:

    mysql://:@/?reconnect=true

    現在,有了這個,您應該使用新資訊稍微修改您的程式碼。您不想在版本控制中公開資料庫憑證,因此您可以使用環境變數來完成它:

    const db =  mysql.createConnection({
        connectionaLimit: 50,
        user: process.env.DB_USER,
        host: process.env.DB_HOST,
        password: process.env.DB_PASSWORD,
        database: process.env.DATABASE,
        port: 3306
    });
    

    此外,您需要為正在運行的 Heroku 應用程式設定環境變數:

    heroku config:set DB_USER=
    heroku config:set DB_PASSWORD=
    heroku config:set DB_HOST=
    heroku config:set DATABASE=

    現在,您有一個在 Heroku 上運行的資料庫實例和一個可以連接到該資料庫的 NodeJS 應用程式實例。

    要進一步閱讀,您可能想查看這些連結:

    https:// /lo-victoria.com/build-a-mysql-nodejs-crud-app-4-deploying-to-heroku-finale

    #https://www.bezkoder.com/部署節點-js-app-heroku-cleardb-mysql/

    #https://raddy.co.uk/blog/how-to-deploy-node-js-express-ejs-mysql-website-on-heroku-cleardb/(這個使用Heroku 的介面)< /p>

    回覆
    0
  • 取消回覆