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

Sequelize连接PostgreSQL失败:错误显示Windows用户名而非指定用户名

解决Sequelize连接PostgreSQL时使用Windows用户名而非指定用户的问题

问题根因

核心问题是Sequelize的配置字段与pg驱动的命名规则不一致:pg/pg-promise使用user作为用户名配置键,但Sequelize要求用username。当你传入user时,Sequelize无法识别该字段,会自动 fallback 到当前系统的用户名(也就是你的Windows用户名),最终导致认证失败。

修复步骤

  1. 修正配置字段名
    将Sequelize实例配置中的user替换为username,修改后的代码如下:

    //Imports required modules 
    require("dotenv").config();
    
    //Imports required modules
    const { Sequelize } = require('sequelize');
    
    //Sets up database connection
    const sequelize = new Sequelize({
      dialect: 'postgres',
      username: process.env.DB_USER, // 替换为Sequelize要求的字段名
      host: process.env.DB_HOST,
      database: process.env.DB_NAME,
      password: process.env.DB_PASSWORD,
      port: process.env.DB_PORT,
    });
    
    const testFunction = async function(){
      try {
        await sequelize.authenticate();
        console.log('Connection has been established successfully.');
      } catch (error) {
        console.error(error);
      }
    };
    
    testFunction();
    
    module.exports = {sequelize};
    
  2. 验证环境变量加载
    可以在代码开头添加日志,确认环境变量是否被正确读取:

    console.log("DB_USER:", process.env.DB_USER); // 检查输出是否为你指定的数据库用户名
    

补充说明

之前使用pg/pg-promise能成功连接,是因为它们直接调用PostgreSQL Node.js驱动的原生配置(user是驱动的标准字段),而Sequelize对配置做了封装,使用自己的字段命名规范,这是Sequelize新手容易踩的典型坑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 22:49:53