docker + golang lib / pq“拨号TCP 127.0.0.1:5432:连接:连接被拒绝”

sql.Open()</ code>不会出错:</ p>
\ n

  if db,err = sql.Open(“ postgres”,url);  err!= nil {
返回nil,fmt.Errorf(“ Postgres连接错误:(%v)”,err)
}
</ code> </ pre>

但是 db.Ping()</ code>会出错:</ p>

 如果err = db.Ping();  err!= nil {
返回nil,fmt.Errorf(“ Postgres ping错误:(%v)”,err)
}
</ code> </ pre>

仅仅是因为lib / pq连接字符串不会使用单独的连接参数从docker容器中进行连接。</ p>

例如:</ p>

  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)
</ code> </ pre >
</ div>

展开原文

原文

sql.Open() wouldn't error:

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

but db.Ping() would error:

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

and it was simply because the lib/pq connection string wouldn't connect from within a docker container with the seperated connection parameters.

For example:

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)

dongxia2030
dongxia2030 奇怪的。看来您有一些怪异的残余帐户chat.stackoverflow.com/users/244193/mikeumus
大约一年之前 回复
douchi5822
douchi5822 我现在在这里:meta.stackoverflow.com/questions/334761/…我现在的运气是ðŸ’
大约一年之前 回复
duanhun3273
duanhun3273 FWIW,您不必结束您的问题,我们并不是要说您做错了,但是我是说您所描述的不是一种有效的调试技术。如果需要,可以进入聊天室。一旦看到该评论,请将该评论标记为“不再需要”,以保持此问答的井井有条。
大约一年之前 回复

1个回答



使用连接字符串作为URL有效:</ p>

  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)
</ code> </ pre>
\ n

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

我在这个问题上停留了一天多,而在GitHub上,我对Nikolay Sandalov的评论有所修正:
https://github.com/coreos/clair/issues/134#issuecomment-491300639 </ a > </ p>

谢谢你,尼古拉·

展开原文

原文

Using the connection string as a URL worked:

    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)

See lib/pq docs here: https://godoc.org/github.com/lib/pq

I was stuck on this for more than a day and I owe the fix to Nikolay Sandalov's comment here in GitHub: https://github.com/coreos/clair/issues/134#issuecomment-491300639

Thank you, Nikolay

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐