首页 > 解决方案 > 无法检测到默认用户名。请明确提供一份

问题描述

将 golang 容器连接到 postgres 时出现此错误。

pq:无法检测到默认用户名。请明确提供一份

我尝试了许多用户名和密码组合,但都没有运气。我应该使用什么用户名组合?

码头工人撰写代码是:

version: '3.6'
services:
  postgres:
    image: postgres:11.1-alpine
    ports:
      - '5432:5432'
    #network_mode: bridge
    container_name: postgres

    environment:
      POSTGRES_USER: 'user'
      POSTGRES_PASSWORD: 'password'
      POSTGRESS_DB: 'db_amex01'
    volumes:
      - ./init:/docker-entrypoint-initdb.d/


  todo:
    build: ./go_amex/
    depends_on:
      - "postgres"
    restart: always

    # ports:
    #   - "8000:8080"

./go_amex/main.go

db, err := gorm.Open("postgres", "host='postgres'&user=user@localhost&port=5432&dbname='todo'&password='password'&sslmode=disable")

if err != nil {
    fmt.Println("============   exiting ==========")
    fmt.Println(err)
    panic("failed to connect database cc")
}

defer db.Close()

挑战的 Github 代码

标签: postgresqldockergodocker-compose

解决方案


尝试这个:

version: '3'
services:
  postgres:
    image: kartoza/postgis:9.6-2.4
    ports:
      - "5432:5432"
    environment:
      POSTGRES_USER: developer
      POSTGRES_DBNAME: somedb
      POSTGRES_PASS: somepass
    volumes:
      - $HOME/data/postgres:/var/lib/postgresql/data

yaml中的数据库配置

sqlBind := fmt.Sprintf("user=%s password=%s dbname=%s sslmode=disable",
    "developer",
    "somepass",
    "somedb",
)

推荐阅读