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

执行drizzle-kit studio时PostgreSQL用户postgres认证失败求助

解决Drizzle Kit Studio连接PostgreSQL时的密码认证失败问题

以下是针对你遇到的password authentication failed for user "postgres"错误的排查和解决步骤:

1. 验证环境变量是否正确加载

先确认DATABASE_URL是否被正确读取:

  • 在drizzle.config.ts中添加日志输出:
    import type { Config } from "drizzle-kit";
    import { config } from "dotenv";
    
    config({ path: "./.env.local" });
    
    // 添加这行日志,检查环境变量加载情况
    console.log("Loaded DATABASE_URL:", process.env.DATABASE_URL);
    
    export default {
      schema: "./src/lib/db/schema/*.sql.ts",
      out: "./drizzle",
      driver: "pg",
      dbCredentials: {
        connectionString: process.env.DATABASE_URL,
      },
      verbose: true,
      strict: true,
    } satisfies Config;
    
  • 执行ts-node drizzle.config.ts查看输出的连接字符串是否与.env.local一致。如果为空或不正确,检查.env.local的路径是否在项目根目录下,文件名是否无误。

2. 重置PostgreSQL容器密码(重点排查)

如果之前启动过容器,./data/db目录会保留旧数据库数据,此时docker-compose.yml中的POSTGRES_PASSWORD环境变量不会生效:

  • 停止并清理容器和数据卷:
    docker compose down -v
    
  • 删除本地data/db目录:
    rm -rf ./data/db
    
  • 重新启动容器:
    docker compose up -d
    
  • 用Adminer验证连接正常后,再尝试npx drizzle-kit studio。

3. 修改连接字符串为IP地址

localhost可能优先使用Unix套接字连接,而容器暴露的是TCP端口,改用127.0.0.1可规避该问题:
修改.env.local中的连接字符串:

DATABASE_URL=postgresql://postgres:postgres@127.0.0.1:5432/testDB

4. 确保依赖版本兼容

确认项目中drizzle-kit和pg版本匹配:

  • 检查package.json中的依赖:
    {
      "devDependencies": {
        "drizzle-kit": "^0.20.0",
        "pg": "^8.11.0"
      }
    }
    
  • 版本过旧则执行更新:
    npm install drizzle-kit@latest pg@latest --save-dev
    

5. 手动验证数据库连接

用pg库直接测试连接,排除Drizzle配置问题:
在项目根目录创建test-connection.ts:

import { Client } from "pg";
import { config } from "dotenv";

config({ path: "./.env.local" });

const client = new Client({
  connectionString: process.env.DATABASE_URL,
});

async function testConnection() {
  try {
    await client.connect();
    console.log("Connection successful!");
    await client.end();
  } catch (err) {
    console.error("Connection error:", err);
  }
}

testConnection();

执行ts-node test-connection.ts,如果同样报错,说明问题出在数据库连接本身;如果成功,则检查Drizzle配置是否有误。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 19:59:56