You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NextJS项目使用DotEnv环境变量连接MySQL数据库报错如何解决?

问题排查与解决方法
  • 确认代码运行环境
    数据库连接属于敏感操作,必须运行在NextJS服务端环境。如果你的连接代码写在客户端组件(无'use server'标记、或直接在客户端渲染逻辑中调用),非NEXT_PUBLIC_前缀的环境变量无法被读取。将数据库连接逻辑单独抽离到服务端工具文件,顶部添加'use server'明确标记服务端运行。
  • 修正端口数据类型
    process.env中所有变量默认是字符串类型,而多数MySQL驱动要求port参数为数字类型。你明文配置时用的是数字3306,而从环境变量读取的是字符串"3306",类型不匹配会导致连接失败,需要显式转换为数字:
port: parseInt(process.env.MYSQL_PORT, 10)
  • 检查.env.local文件格式
    不要在变量声明的等号两侧添加空格,值无特殊字符时不需要加引号,错误写法示例:

MYSQL_HOST = "127.0.0.1"
正确写法示例:
MYSQL_HOST=127.0.0.1
MYSQL_PORT=3306
MYSQL_DATABASE=mydatabase
MYSQL_USER=myuser
MYSQL_PASSWORD=123

  • 确认服务已重启
    修改.env系列文件后,必须手动重启NextJS开发服务,环境变量才会被重新加载,热更新不会触发env变量更新。
  • 添加调试日志确认变量加载
    在数据库连接代码前添加日志,检查终端输出的变量值是否符合预期:
console.log('环境变量校验:', process.env.MYSQL_HOST, process.env.MYSQL_PORT)
修正后代码示例
'use server'

const db = mysql({  
    config: {    
        host: process.env.MYSQL_HOST,    
        port: parseInt(process.env.MYSQL_PORT, 10), 
        database: process.env.MYSQL_DATABASE, 
        user: process.env.MYSQL_USER,  
        password: process.env.MYSQL_PASSWORD 
      }
});

内容的提问来源于stack exchange,提问作者Pablo Cabrera

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 01:18:04