在 vercel 上部署 nodejs 应用程序时无法访问位于 `localhost`:`3306` 的数据库服务器。相同的数据库在本地环境中运行良好
在 vercel 上部署时出现以下错误
PrismaClientInitializationError:
Invalid `prisma.user.findUnique()` invocation:
Can't reach database server at `localhost`:`3306`
Please make sure your database server is running at `localhost`:`3306`.
我已经正确添加了环境变量,确保数据库服务器正在运行。仍然无法连接到数据库。我正在使用 prisma 客户端连接到 db.Db 连接在本地设置中工作正常。
回答如下:如果您在 Vercel 上部署 Node.js 应用程序时遇到连接到位于 localhost:3306 的数据库服务器的问题,这可能是因为 Vercel 使用不同的网络配置并且无法从 Vercel 的部署环境访问您的本地数据库服务器。
要解决这个问题,您有几个选择:
使用托管数据库:考虑使用基于云的数据库服务,如 Amazon RDS、Google Cloud SQL 或 Microsoft Azure Database。这些服务提供了一个稳定且可访问的数据库服务器,可以从任何环境访问。
配置远程数据库服务器:如果您有权访问可从 Vercel 的部署环境访问的远程数据库服务器,则可以更新 Node.js 应用程序的配置以连接到该远程服务器而不是本地主机。您需要更新应用程序代码中的连接设置,以指向远程服务器的主机名、端口、用户名和密码。
使用环境变量:Vercel 允许您为部署定义环境变量。您可以将 Node.js 应用配置为使用环境变量来检索数据库连接设置。这允许您根据环境动态配置数据库服务器。确保更新您的应用代码以从环境变量中读取数据库连接设置。
例如,在 Node.js 中,您可以使用 dotenv 包从 .env 文件加载环境变量。以下是如何为数据库连接设置环境变量的示例: 在项目的根目录中创建一个 .env 文件。
将以下行添加到
**.env**
文件,将值替换为您的实际数据库连接详细信息:
在项目的根目录中创建一个
文件。.env
将以下行添加到
文件,将值替换为您的实际数据库连接详细信息:**.env**
DB_HOST=本地主机 DB_PORT=3306 DB_USERNAME=你的用户名 DB_PASSWORD=你的密码
在您的 Node.js 代码中,通过运行
dotenv
安装
npm install dotenv
包在代码文件的顶部,添加以下行以加载环境变量:
require('dotenv').config();
更新数据库连接代码以使用环境变量:
常量连接 = mysql.createConnection({ 主机:process.env.DB_HOST, 端口:process.env.DB_PORT, 用户:process.env.DB_USERNAME, 密码:process.env.DB_PASSWORD, // 其他连接选项 });
通过使用环境变量,你可以在不修改代码的情况下轻松地在不同的数据库配置之间切换,从而更容易像 Vercel 一样部署到不同的环境。
记得更新 Vercel 部署上的
**.env**
文件,以包含特定于该环境的正确数据库连接详细信息。
请注意,具体步骤和配置可能因您的数据库技术和部署平台而异。