登录  /  注册
原标题:What is causing this Heroku mysql connection error? (Trying to connect frontend to backend POST request)Identifying the source of the Heroku mysql connection error when connecting frontend to back
P粉021553460
P粉021553460 2023-12-13 12:40:42
[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粉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 的界面)

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 //m.sbmmt.com/ All Rights Reserved | php.cn | 湘ICP备2023035733号