gpt4 book ai didi

mysql - ClearDB 与 'npm run start' 连接,但不与 Heroku 部署连接; ERR_CONNECTION_REFUSED

转载 作者:行者123 更新时间:2023-11-29 16:18:38 25 4
gpt4 key购买 nike

我在 Heroku 上部署了一个 Node 应用程序,并使用 MySQL Workbench 设置了 ClearDB。当我使用 npm run start 时,它工作得很好,数据显示出来。当我在 Heroku 中打开时; heroku local webheroku open 应用程序已部署,但不显示任何数据。错误消息为资源:net::ERR_CONNECTION_REFUSED

我的数据库很小,因此大小限制不是问题。我的 Procfile 设置为

web: npm run start

为什么我的clearDB没有通过Heroku连接?

我读过的其他一些答案涉及 .env 文件,但我没有。我尝试使用 DATABASE_URL 创建一个,但没有任何变化。我还尝试添加 port: process.env.PORT || 3036 到我的数据库配置文件。

我可以通过 MySQL Workbench 连接到 Heroku/ClearDB 数据库,并且所有表都在那里。

我的数据库配置文件:

import mysql from 'mysql'

let pool = mysql.createPool({
connectionLimit: 10,
user: '******',
password: '*******',
host: '*******',
database: '*******',
port: process.env.PORT || 3036
});

let chirprdb = {};

chirprdb.all = () => {
return new Promise((resolve, reject) => {
pool.query('SELECT * FROM chirps', (err, results) => {
if (err) {
return reject(err);
}
return resolve(results);
})
})
}

export default chirprdb;

预期结果:在部署的 Heroku URL 上查看应用程序及其所有数据

实际结果:看到应用程序但没有加载数据,错误是资源:net::ERR_CONNECTION_REFUSED

编辑我更改了数据库(以便不在此处发布我的凭据)并创建了与 MySQL Workbench 的新连接。单击“测试连接”给了我这个警告 enter image description here .

导入 chirperdb 的路由器

import { Router } from 'express';
import db from '../db'

let router = Router();

router.get('/:id?', async (req, res) => {
let id = req.params.id;
if (id) {
try {
let results = await db.one(id);
res.json(results);
} catch (e) {
console.log(e);
res.sendStatus(500);
}
} else {
try {
let results = await db.all();
res.json(results);
} catch (e) {
console.log(e);
res.sendStatus(500);
}
}
});

最佳答案

首先,在执行其他操作之前,请更改您的 ClearDB 凭据。您已将它们发布在这里,您不能再相信它们了。编辑问题以删除它们是不够的。

Some other answers I've read involve an .env file, which I didn't have. I tried creating one with the DATABASE_URL but no change.

不要在 Heroku 上使用 .env 文件。该文件只是填充环境变量的一种迂回方式,但 Heroku supports environment variables natively 。如果您需要设置环境变量,请使用 heroku config:set 或 Web 界面进行设置。

I also tried adding port: process.env.PORT || 3036 to my database config file.

PORT 环境变量是您的 Web 服务器需要监听的端口,而不是您用于连接数据库的端口。 ClearDB 插件应该已经设置了一个 CLEARDB_DATABASE_URL 环境变量。使用该变量(如果必须的话,也可以使用单独的 CLEARDB_ 变量)连接到 MySQL。

您可以使用parse-database-url library解析单个 CLEARDB_DATABASE_URL 值并连接到您的数据库。

关于mysql - ClearDB 与 'npm run start' 连接,但不与 Heroku 部署连接; ERR_CONNECTION_REFUSED,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54641529/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com