gorm拨号错误的Postgresql连接无法分配请求的地址



我正在尝试将新的gorm v2实现与Postgresql一起使用(我将Docker用于Golang应用程序和Postgres(。我试着按照gorm文档中显示的那样做。

这给了我以下错误:

web_1|2020/09/19 19:25:57/go/src/caiqueservice/main.go:36失败连接到host=/tmp user=admin database=caique:拨号错误(拨号unix/tmp/.s.PGSQL.5432:连接:没有这样的文件或目录(

因此,由于文档没有指定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失败连接到host=localhost user=admin database=caique:拨号错误(拨号tcp[:1]:5432:连接:无法分配请求的地址(

pgadmin可以访问postgres数据库。我不知道下一步该怎么办,我们将不胜感激。

在容器内部,localhost指的是容器本身,而不是主机。如果您使用的是docker-compose,您应该能够使用postgres容器名作为主机名连接到postgres集装箱(从应用集装箱(。如果您分别运行两个容器,则需要将它们连接到同一docker网络或链接它们。

最新更新