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

执行db-migrate up时遇用户Coach密码认证失败问题求助

PostgreSQL密码认证失败问题解决(执行db-migrate up时)

问题概述

执行db-migrate up创建food表时,持续触发如下错误:

[ERROR] AssertionError [ERR_ASSERTION]: ifError got unwanted exception: password authentication failed for user "Coach"

核心原因分析

从配置文件来看,问题根源在于环境变量格式错误,导致PostgreSQL容器启动时未按预期创建指定的用户与数据库,最终引发密码认证失败。

解决方案

1. 修复.env文件格式

.env文件不能使用JavaScript的const声明,必须采用纯键值对格式,修改后内容如下:

POSTGRES_HOST=127.0.0.1
POSTGRES_DB=storefront
POSTGRES_USER=Coach
POSTGRES_PASSWORD=password123

原文件的const写法会导致dotenv无法正确读取环境变量,PostgreSQL容器也无法识别配置来创建对应用户和数据库。

2. 重置PostgreSQL容器与数据卷

之前错误配置已生成不符合要求的数据库数据卷,需彻底清理后重新启动:

# 停止并删除容器及关联数据卷
docker-compose down -v
# 重新启动容器
docker-compose up -d

-v参数会删除旧数据卷,确保容器基于修复后的.env配置重新创建用户和数据库。

3. 验证配置一致性

确保以下配置文件参数完全匹配:

  • database.json的dev环境配置:
    {
        "dev": {
            "driver": "pg",
            "host": "127.0.0.1",
            "database": "storefront",
            "user": "Coach",
            "password": "password123"
        }
    }
    
  • database.ts连接配置:无需额外修改,修复.env后,process.env会自动读取正确的变量值。

4. 测试数据库连接

创建测试脚本test-connection.ts验证连接是否正常:

import client from './database.ts';

async function testConnection() {
  try {
    const res = await client.query('SELECT 1');
    console.log('数据库连接成功:', res.rows);
    process.exit(0);
  } catch (err) {
    console.error('连接失败:', err);
    process.exit(1);
  }
}

testConnection();

执行脚本:

npx ts-node test-connection.ts

连接成功后,重新执行迁移命令:

db-migrate up

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 05:21:56