原标题:Heroku mysql 连接错误是什么原因造成的? (尝试将前端连接到后端 POST 请求)识别前端连接到后端时 Heroku mysql 连接错误的来源
P粉021553460
P粉021553460 2023-12-13 12:40:42
0
1
692

{已解决}。新错误

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粉021553460
P粉021553460

全部回复(1)
P粉610028841

您无法连接到数据库,因为 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 的界面)

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板