执行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
相关产品推荐
相关产品推荐

