cari

Rumah  >  Soal Jawab  >  teks badan

原标题:Apakah yang menyebabkan ralat sambungan mysql Heroku ini? (Cuba menyambungkan bahagian hadapan ke bahagian belakang permintaan POST) Mengenal pasti sumber ralat sambungan mysql Heroku semasa menyambungkan bahagian hadapan ke belakang

{SELESAI}. Ralat baharu

Ralat log 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

Maklumat/Latar Belakang:

React js frontend (kini dihoskan di Netlifty) Bahagian belakang Javascript Node menggunakan Express dan MYSQL2 (dihoskan pada Heroku)

Matlamat: Sambungkan permintaan POST bahagian hadapan Neflifty dengan bahagian belakang Heroku, dapatkan data muatan POST dan masukkannya ke dalam jadual MYSQL.

Kemas kini: 24 September 2021

Saya telah melakukan semua yang dicadangkan. Saya telah mencipta pangkalan data baharu menggunakan clearDB. Tambahnya dan uji sambungan dalam mysql Workbench. Jadual yang diperlukan dibuat. Kod hujung belakang dikemas kini untuk membuat sambungan ke pangkalan data baharu. Semak pembolehubah Heroko dan pastikan ia ditunjukkan dengan betul dalam pangkalan data baharu. Sekarang ada masalah kebenaran. {Diselesaikan}

Kod hujung belakang yang diperbetulkan baharu:


const express = require('express');

const app = express();

const port = process.env.Port || 8000

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


Soalan: Jika ini bersambung secara setempat pada meja kerja, mengapa Heroku tidak akan menyambung jika saya menambahkannya sebagai pembolehubah? {Dijawab}

Soalan baharu: Mengapakah ia cuba menggunakan port 8000 sedangkan ia sepatutnya menggunakan persekitaran? Mengapa ia tamat masa?

Sebarang bantuan mengenai perkara ini amat dihargai.

P粉021553460P粉021553460351 hari yang lalu694

membalas semua(1)saya akan balas

  • P粉610028841

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

    Anda tidak boleh menyambung ke pangkalan data kerana tiada contoh pangkalan data berjalan pada Heroku. Sebaik sahaja anda menolak kod menggunakan Heroku CLI, Heroku akan menyediakan aplikasi NodeJS untuk anda, tetapi itu tidak bermakna ia juga akan menyediakan pangkalan data untuk anda.

    Anda boleh menambah pangkalan data pada aplikasi anda melalui antara muka Heroku atau CLI. Daripada CLI (kami akan menyediakan ClearDB, tetapi mana-mana pemalam pangkalan data MySQL akan berfungsi):

    heroku addons:create cleardb:ignite

    Setelah selesai, anda mahukan URL pangkalan data baharu (bukan localhost):

    heroku config | grep CLEARDB_DATABASE_URL

    Keluaran arahan terakhir akan serupa dengan:

    mysql://:@/?reconnect=true

    Kini, dengan ini, anda harus mengubah suai sedikit kod anda dengan maklumat baharu. Anda tidak mahu mendedahkan bukti kelayakan pangkalan data dalam kawalan versi, jadi anda boleh melakukannya menggunakan pembolehubah persekitaran:

    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
    });
    

    Selain itu, anda perlu menetapkan pembolehubah persekitaran untuk aplikasi Heroku anda yang sedang berjalan:

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

    Kini anda mempunyai contoh pangkalan data yang dijalankan pada Heroku dan tika aplikasi NodeJS yang boleh menyambung ke pangkalan data.

    Untuk bacaan lanjut anda mungkin ingin menyemak pautan ini:

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

    https://www.bezkoder.com/deployment-node-js-app-heroku-cleardb-mysql/

    https://raddy.co.uk/blog/how-to-deploy-node-js-express-ejs-mysql-website-on-heroku-cleardb/(Antara muka ini menggunakan Heroku)< /p>

    balas
    0
  • Batalbalas