DrizzleORM - 使用 `heroku-postgres` 数据库 (aws) 连接 URL 时出现客户端身份验证错误

问题描述 投票:0回答:1

我正在尝试使用 drizzleORM 连接到 heroku-postgres 数据库,该数据库实际上是一个 aws 数据库。

这是我得到的错误,使用我从heroku仪表板获得的数据库url:

xxx\node_modules\drizzle-kit\bin.cjs:23472
        const message = name === "notice" ? new messages_1.NoticeMessage(length, messageValue) : new messages_1.DatabaseError(messageValue, length, name);

error: no pg_hba.conf entry for host "xxx", user "xxx", database "xxx", no encryption
    at Parser.parseErrorMessage (xxx\node_modules\drizzle-kit\bin.cjs:23472:98)
    at Parser.handlePacket (xxx\node_modules\drizzle-kit\bin.cjs:23313:25)
    at Parser.parse (xxx\node_modules\drizzle-kit\bin.cjs:23237:34)
    at Socket.<anonymous> (xxx\node_modules\drizzle-kit\bin.cjs:23513:44)
    at Socket.emit (node:events:517:28)
    at addChunk (node:internal/streams/readable:368:12)
    at readableAddChunk (node:internal/streams/readable:341:9)
    at Readable.push (node:internal/streams/readable:278:10)
    at TCP.onStreamRead (node:internal/stream_base_commons:190:23)
    at TCP.callbackTrampoline (node:internal/async_hooks:128:17) {
  length: 175,
  severity: 'FATAL',
  code: '28000',
  detail: undefined,
  hint: undefined,
  position: undefined,
  internalPosition: undefined,
  internalQuery: undefined,
  where: undefined,
  schema: undefined,
  table: undefined,
  column: undefined,
  dataType: undefined,
  constraint: undefined,
  file: 'auth.c',
  line: '536',
  routine: 'ClientAuthentication'
}

Node.js v18.19.0

我在网址末尾添加了

?sslmode=require
来解决此问题,但现在我得到了这个:

DEPTH_ZERO_SELF_SIGNED_CERT

我必须做什么?我基本上只有连接网址,仅此而已。我无法在heroku上配置数据库。

这是我的毛毛雨配置:

import { defineConfig } from 'drizzle-kit';

export default defineConfig({
    schema: "./schema.ts",
    out: "./drizzle",
    driver: "pg",
    dbCredentials: {
        connectionString: process.env.DATABASE_HOST!
    },
    verbose: true
})
amazon-web-services orm heroku-postgres self-signed-certificate drizzle
1个回答
0
投票

我刚刚遇到了和你一样的问题,我正在开发一个使用 postgres.js 作为驱动程序的项目。我尝试了一切:

  • SSL 设置为
    no-verify
  • 奔跑
    heroku config:set PGSSLMODE=no-verify
  • ssl
    键设置为
    { rejectUnauthorized: false}
  • 在连接url中设置
    sslmode=no-verify
  • 禁用
    SSL
    并将其设置为它可能具有的每个选项

最后,不幸的是,我的解决办法是将驱动程序切换到node-postgres又名

pg
。我认为我需要切换的原因是,每当我切换
SSL
上的
postgres.js
选项并记录连接时,它都会显示更改,但 Heroku 会抛出“无加密”消息。如果我强迫
SSL
或尝试其他事情,那对我来说就没有意义。至少当我调整这些值时,我预计 Heroku 的 Postgres 的错误消息会发生一些变化。所以我认为我的
SSL
更改没有正确地连接到连接。

无论如何,在为 Heroku 开发时,我强烈建议在 Drizzle 中使用

pg
而不是
postgres.js

© www.soinside.com 2019 - 2024. All rights reserved.