过去几周我一直在一个新项目中使用 drizzle,它提供了很棒的开发人员体验。现在,是时候将该应用程序投入生产了。但是,我目前面临迁移问题。
该应用程序部署在AWS ECS中并连接到AWS RDS中的PostgreSQL数据库。我已在 ECS 任务角色中提供了访问 RDS 实例所需的 IAM 策略。连接已建立,但之后当我执行迁移函数时,我遇到了在本地运行时没有遇到的错误。
错误参考:
PostgresError: no pg_hba.conf entry for host <MY_EC2_IP>, user <MY_USER>, database <MY_DATABASE>, no encryption
at ErrorResponse (/app/node_modules/postgres/cjs/src/connection.js:771:26)
at handle (/app/node_modules/postgres/cjs/src/connection.js:473:6)
at Socket.data (/app/node_modules/postgres/cjs/src/connection.js:314:9)
at Socket.emit (node:events:513:28)
at Socket.emit (node:domain:489:12)
at addChunk (node:internal/streams/readable:315:12)
at readableAddChunk (node:internal/streams/readable:289:9)
at Socket.Readable.push (node:internal/streams/readable:228:10)
at TCP.onStreamRead (node:internal/stream_base_commons:190:23)
我尝试更改 postgres 客户端。
我在使用 Prisma 和 TypeORM 等其他 ORM 时从未遇到过这样的问题。这是 Drizzle 在 Postgres 中执行 SQL 的特定方式吗?
所以这篇文章有一个答案: 使用环境变量
NODE_TLS_REJECT_UNAUTHORIZED = 0
并将 ?ssl=true
添加到 url 可以解决问题。