带有 gorm 拨号错误的 Postgresql 连接无法分配请求的地址
Postgresql connection with gorm dial error cannot assign requested address
我正在尝试将新的 gorm v2 实现与 Postgresql 一起使用(我将 Docker 用于 Golang 应用程序和 Postgres)。我尝试按照 gorm documentation.
中所示进行操作
这给了我以下错误:
web_1 | 2020/09/19 19:25:57 /go/src/caiqueservice/main.go:36 failed
to connect to host=/tmp user=admin database=caique
: dial error (dial
unix /tmp/.s.PGSQL.5432: connect: no such file or directory)
因此,由于文档未指定 host
,但错误消息将其设置为 /tmp 我设置了该值。
dsn := fmt.Sprintf("host=%v user=%v password=%v dbname=%v port=%v sslmode=disable",
os.Getenv("DB_HOST"),
os.Getenv("DB_USERNAME"),
os.Getenv("DB_PASSWORD"),
os.Getenv("DB_DATABASE"),
os.Getenv("DB_PORT"),
)
db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{})
.env
DB_HOST=localhost
DB_PORT=5432
DB_DATABASE=caique
DB_USERNAME=admin
DB_PASSWORD=password
这样做会给我以下错误消息:
web_1 | 2020/09/19 19:36:47 /go/src/caiqueservice/main.go:36 failed
to connect to host=localhost user=admin database=caique
: dial error
(dial tcp [::1]:5432: connect: cannot assign requested address)
pgadmin 可以访问 postgres 数据库。
我不知道下一步该怎么做,我们将不胜感激。
在容器内部,localhost
指的是容器本身,而不是宿主机。如果您使用 docker-compose,您应该能够使用 postgres 容器名称作为主机名连接到 postgres 容器(从应用程序容器)。如果您分别 运行 两个容器,则需要将它们连接到相同的 docker 网络或 link 它们。
我正在尝试将新的 gorm v2 实现与 Postgresql 一起使用(我将 Docker 用于 Golang 应用程序和 Postgres)。我尝试按照 gorm documentation.
中所示进行操作这给了我以下错误:
web_1 | 2020/09/19 19:25:57 /go/src/caiqueservice/main.go:36 failed to connect to
host=/tmp user=admin database=caique
: dial error (dial unix /tmp/.s.PGSQL.5432: connect: no such file or directory)
因此,由于文档未指定 host
,但错误消息将其设置为 /tmp 我设置了该值。
dsn := fmt.Sprintf("host=%v user=%v password=%v dbname=%v port=%v sslmode=disable",
os.Getenv("DB_HOST"),
os.Getenv("DB_USERNAME"),
os.Getenv("DB_PASSWORD"),
os.Getenv("DB_DATABASE"),
os.Getenv("DB_PORT"),
)
db, err := gorm.Open(postgres.Open(dsn), &gorm.Config{})
.env
DB_HOST=localhost
DB_PORT=5432
DB_DATABASE=caique
DB_USERNAME=admin
DB_PASSWORD=password
这样做会给我以下错误消息:
web_1 | 2020/09/19 19:36:47 /go/src/caiqueservice/main.go:36 failed to connect to
host=localhost user=admin database=caique
: dial error (dial tcp [::1]:5432: connect: cannot assign requested address)
pgadmin 可以访问 postgres 数据库。 我不知道下一步该怎么做,我们将不胜感激。
在容器内部,localhost
指的是容器本身,而不是宿主机。如果您使用 docker-compose,您应该能够使用 postgres 容器名称作为主机名连接到 postgres 容器(从应用程序容器)。如果您分别 运行 两个容器,则需要将它们连接到相同的 docker 网络或 link 它们。