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

Drizzle ORM在AWS RDS执行PostgreSQL迁移时遇pg_hba.conf错误

问题解析与解决办法

这个错误和Drizzle执行SQL的逻辑无关,核心原因是Drizzle默认依赖的postgres客户端库未自动开启SSL加密连接,而AWS RDS PostgreSQL实例强制要求加密连接,你之前使用的Prisma、TypeORM会自动适配RDS的加密要求,所以没遇到这个问题。

解决步骤

  • 显式配置SSL连接:在Drizzle的数据库连接配置中添加SSL选项,确保连接使用加密:
    如果你用drizzle-orm/postgres-js创建客户端:
    import { postgres } from 'drizzle-orm/postgres-js';
    
    const db = postgres(process.env.DATABASE_URL!, {
      ssl: { rejectUnauthorized: false }, // AWS RDS的SSL证书可信任,无需验证
    });
    
    如果你用drizzle-kit执行迁移,需要在drizzle.config.ts中补充SSL配置:
    import { defineConfig } from 'drizzle-kit';
    
    export default defineConfig({
      schema: './src/db/schema.ts',
      out: './drizzle',
      dialect: 'postgresql',
      dbCredentials: {
        url: process.env.DATABASE_URL!,
        ssl: { rejectUnauthorized: false },
      },
    });
    
  • 补充连接字符串参数:也可以直接在DATABASE_URL中加入sslmode=require参数,比如:
    postgres://<USER>:<PASSWORD>@<RDS_HOST>:5432<DB_NAME>?sslmode=require
    
  • 验证RDS安全组:确认ECS任务所在的IP/安全组已被添加到RDS安全组的入站规则中(虽然错误提示是加密问题,但这是基础前提)

补充说明

Prisma、TypeORM等ORM在连接AWS RDS时,会默认设置sslmode=prefer或自动启用SSL,而postgres库(Drizzle的默认客户端)默认不开启SSL,因此需要手动配置加密选项来匹配RDS的要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 15:36:05