【问题标题】:NestJS => PostgresQL: Error: getaddrinfo EAI_AGAIN postgres at GetAddrInfoReqWrap.onlookupNestJS => PostgresQL:错误:GetAddrInfoReqWrap.onlookup 处的 getaddrinfo EAI_AGAIN postgres
【发布时间】:2022-04-08 22:41:06
【问题描述】:

我一直在开发一个连接到本地 Postgres 数据库的 NestJS-GraphQL 应用程序。 在重新安装 Ubuntu 20.04 之前一切正常。

在使用项目克隆 repo、安装 Postgres 并使用 yarn start:dev 构建应用程序后,我可以看到这个奇怪的错误:

[Nest] 21577  - 02/05/2022, 2:51:10 PM   ERROR [TypeOrmModule] Unable to connect to the database. Retrying (1)...
Error: getaddrinfo EAI_AGAIN postgres
    at GetAddrInfoReqWrap.onlookup [as oncomplete] (node:dns:71:26)

Postgres 正在运行:

hleb@hleb:~$ psql artwine postgres
psql (14.1 (Ubuntu 14.1-2.pgdg20.04+1))
Type "help" for help.

artwine=# 

/etc/postgresql/14/main/pg_hba.conf

# Database administrative login by Unix domain socket
local   all             postgres                                trust

# TYPE  DATABASE        USER            ADDRESS                 METHOD

# "local" is for Unix domain socket connections only
local   all             all                                     peer
# IPv4 local connections:
host    all             all             127.0.0.1/32            scram-sha-256
# IPv6 local connections:
host    all             all             ::1/128                 scram-sha-256

/etc/postgresql/14/main/pg_ident.conf

# MAPNAME       SYSTEM-USERNAME         PG-USERNAME
user1           hleb                    postgres

.env

DB_TYPE=postgres
DB_HOST=postgres
DB_PORT=5432
DB_USERNAME=hleb
DB_NAME=artwine
DB_PASSWORD=Mypassword

期待社区的帮助,因为我不知道会出现什么问题。 尝试过:重新安装 node_modules、重新安装 Postgres、重新创建 dist 文件夹。

备注: 在使用 yarn start:dev 构建了一个 repo 之后,我使用 docker-compose 在 docker 容器中运行了该应用程序。一切正常,没有错误。也许对调查有用。 感谢您的宝贵时间,不胜感激。

【问题讨论】:

  • 你是如何运行你的服务器和数据库的?如果它在本地运行,或者只有数据库通过 docker-compose 运行并暴露了正确的端口,那么您的 DB_HOST 应该可能是 localhost
  • 哦,是的,完全正确!感谢您的帮助,按预期工作。

标签: postgresql nestjs


【解决方案1】:

DB_HOST=localhost 而不是 DB_HOST=postgres

【讨论】:

    【解决方案2】:

    当完全通过docker-compose 运行应用程序时,使用DB_HOST=postgres 很好,因为 docker-compose 将使用服务名称作为主机在服务之间创建 DNS 解析。但是,如果服务器在本地运行,并且数据库通过docker-compose 运行,您需要将值localhost 用于DB_HOST

    【讨论】:

    • 能否请您指导我在哪里可以学习下一件事:所以,我在本地主机上运行我的 Postgres,并用数据填充它。然后我想在 docker 容器中运行整个应用程序,但是会创建一个新的空数据库,并且我希望丢失我的数据。如何将现有数据库数据连接到 docker 容器? (我是 docker 初学者 :))
    【解决方案3】:

    我遇到了类似的问题。在没有成功更新 Postgresql 配置后,它最终成为我用户密码中的“#”。

    https://github.com/pantsel/konga/issues/510

    【讨论】:

      猜你喜欢
      • 2019-04-06
      • 2019-04-23
      • 1970-01-01
      • 1970-01-01
      • 2020-05-10
      • 2020-06-12
      • 1970-01-01
      相关资源
      最近更新 更多