【问题标题】:docker + golang lib/pq "dial tcp 127.0.0.1:5432: connect: connection refused"docker + golang lib/pq “拨号 tcp 127.0.0.1:5432:连接:连接被拒绝”
【发布时间】:2020-01-01 22:41:46
【问题描述】:

sql.Open() 不会出错:

if db, err = sql.Open("postgres", url); err != nil {
    return nil, fmt.Errorf("Postgres connect error : (%v)", err)
}

db.Ping() 会出错:

if err = db.Ping(); err != nil {
    return nil, fmt.Errorf("Postgres ping error : (%v)", err)
}

这仅仅是因为 lib/pq 连接字符串不会使用单独的连接参数从 docker 容器内连接。

例如:

url := fmt.Sprintf("user=%v password=%v host=%v port=%v dbname=%v",
    rs.conf.Redshift.User,
    rs.conf.Redshift.Password,
    rs.conf.Redshift.Host,
    rs.conf.Redshift.Port,
    rs.conf.Redshift.DB)

【问题讨论】:

  • FWIW,您不必结束您的问题,我们并不是要说您做错了,但我是说您所描述的不是一种有效的调试技术.如果你愿意,可以进入the chat。请在看到此评论后将其标记为“不再需要”,以保持此问答的整洁。
  • @Shepmaster,我现在在这里:meta.stackoverflow.com/questions/334761/…我现在的运气是????
  • 很奇怪。看起来你有一些奇怪的残留帐户chat.stackoverflow.com/users/244193/mikeumus

标签: postgresql docker go kubernetes docker-compose


【解决方案1】:

使用连接字符串作为 URL 有效:

    url := fmt.Sprintf("postgres://%v:%v@%v:%v/%v?sslmode=disable",
        pql.conf.Postgres.User,
        pql.conf.Postgres.Password,
        pql.conf.Postgres.Host,
        pql.conf.Postgres.Port,
        pql.conf.Postgres.DB)

在此处查看 lib/pq 文档: https://godoc.org/github.com/lib/pq

我被困在这个问题上超过一天了,我将修复归功于 Nikolay Sandalov 在 GitHub 上的评论: https://github.com/coreos/clair/issues/134#issuecomment-491300639

谢谢你,尼古拉??‍♂️

【讨论】:

  • 为我工作,来自 2 个帐户=)
  • 像魅力一样工作
猜你喜欢
  • 2020-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-21
  • 2019-12-12
  • 2018-12-26
相关资源
最近更新 更多