docker + golang lib/pq “拨打 tcp 127.0.0.1:5432:

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)


慕森王
浏览 85回答 1
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)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go