mysql - 错误:在 MySQL、Heroku 和 Node.js 上连接 ECONNREFUSED 127.0.0.1:3306
问题描述
我正在用 mysql 和 node.js 测试简单的代码,但它说:
Error: connect ECONNREFUSED 127.0.0.1:3306
这是我的代码:
require('dotenv').config();
const mysql = require('mysql2/promise');
module.exports = mysql.createConnection({
user: process.env.DB_USER,
password: process.env.DB_PASS,
database: process.env.DB_NAME
});
我刚开始做一些mysql连接的代码。任何人都可以解决这个问题吗?
解决方案
Heroku 的工作方式是,您的网络测功机(虚拟机)不能内置 MySQL 实例。也就是说,当您使用 web dyno 时,您将无法连接到 localhost 上的 MySQL。
Heroku 提供了他们自己的 postgreSQL 服务,您可以使用(当然,您必须将 Web 应用程序代码从 MySQL 更改为 postgreSQL)。或者,您可以在 Heroku 应用程序中安装一些不同的第三方 MySQL 插件产品。 https://elements.heroku.com/addons/
这些产品中的每一个都需要您使用从 Web dyno 获得的环境变量连接到它。所以如果你做这样的事情,而不是调试,你将能够在本地和你的测功机上运行。
const dburl = process.env.MYSQL_ADDON
|| 'mysql://' + process.env.DB_USER+ ':' + process.env.DB_PASS
+ '@localhost/' + process.env.DB_NAME
const conn = mysql.createConnection(dburl);
您使用的附加组件具有解释其环境变量名称和详细信息的文档。
可用的第三方加载项具有免费层,允许您处理非常小的 (5MiB) 数据库。对于比他们收费的更大的数据库。
推荐阅读
- python - 使用 LineStrings 将 CSV 转换为 Geojson
- postgresql - 如何修改 EF-Core Database-First (PostgreSQL) 项目以同时使用 SQLite 和 Xamarin.Forms
- testing - 有没有办法让 testcafe 使用 sso 登录?
- reactjs - 使用 Joi - Express 验证输入并在 React 中使用它
- unity3d - 丢失场景文件
- docker - 从 Dockerfile 构建映像时无法连接 debian prod
- haskell - Haskell 自己的递归 concat 方法
- python - 网站克隆脚本忽略没有文件扩展名的链接,例如 about-us/
- java - 如何在 PKCE 中使用 Keycloak
- php - 使用 MySQL 连接的 laravel 关系