Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有gorm拨号错误的Postgresql连接无法分配请求的地址_Postgresql_Go_Go Gorm - Fatal编程技术网

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

带有gorm拨号错误的Postgresql连接无法分配请求的地址,postgresql,go,go-gorm,Postgresql,Go,Go Gorm,我正在尝试将新的gorm v2实现与Postgresql一起使用(我在Golang应用程序和Postgres中使用Docker)。我试着按图中所示做 这给了我以下错误: web|1 | 2020/09/19 19:25:57/go/src/caiqueservice/main.go:36失败 要连接到主机=/tmp user=admin database=caique:拨号错误(拨号 unix/tmp/.s.PGSQL.5432:connect:没有这样的文件或目录) 因此,由于文档没有指定主机

我正在尝试将新的gorm v2实现与Postgresql一起使用(我在Golang应用程序和Postgres中使用Docker)。我试着按图中所示做

这给了我以下错误:

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

因此,由于文档没有指定主机,但错误消息将其设置为/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{})
环境署署长

执行此操作会显示以下错误消息:

web|1 | 2020/09/19 19:36:47/go/src/caiqueservice/main.go:36失败 要连接到
host=localhost user=admin database=caique
:拨号错误 (拨打tcp[::1]:5432:connect:无法分配请求的地址)

pgadmin可以访问postgres数据库。
我不知道接下来要做什么,非常感谢您的帮助。

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

pgadmin是否正在连接到localhost:5432?是的,它是@elemetrics出于开发目的,您还可以使用
172.17.0.1
作为主机名(容器->主机)
DB_HOST=localhost
DB_PORT=5432
DB_DATABASE=caique
DB_USERNAME=admin
DB_PASSWORD=password