[英]Mongo-go-driver: context deadline exceeded
我最近為我正在開發的應用程序升級到了更新的官方 golang mongo 驅動程序。 一切都非常適合我的本地開發,但是當我連接它並指向我的后端服務器時,我在調用 client.Ping(...) 方法時收到“超出上下文截止日期”的提示。
舊的驅動程序代碼仍然可以正常工作,我還打印出連接字符串,可以將其復制並粘貼到指南針應用程序中,並且可以正常工作。
然而,對於我的生活,我無法弄清楚為什么這個新代碼會返回上下文超時。 唯一不同的是 mongo 在 32680 的非標准端口上運行,我也在使用 mgm package。但是它只是使用引擎蓋下的官方 mongo 驅動程序。
Mongo 版本為:4.0.12(本地和遠程)
連接代碼在這里:
// NewClient creates a mongo DateBase connection
func NewClient(cfg config.Mongo) (*Client, error) {
// create database connection string
conStr := fmt.Sprintf("mongodb://%s:%s@%s:%s", cfg.Username, cfg.Password, cfg.Host, cfg.Port)
// set mgm conf ie ctxTimeout value
conf := mgm.Config{CtxTimeout: cfg.CtxTimeout}
// setup mgm / DateBase connection
err := mgm.SetDefaultConfig(&conf, cfg.Database, options.Client().ApplyURI(conStr))
if err != nil {
return nil, errors.Wrapf(err, "failed to connect to mongodb. cfg: %+v. conStr: %+v.", cfg, conStr)
}
// get access to underlying mongodb client driver, db and mgmConfig. Need for adding additional tools like seeding/migrations/etc
mgmCfg, client, db, err := mgm.DefaultConfigs()
if err != nil {
return nil, errors.Wrap(err, "failed to return mgm.DefaultConfigs")
}
// NOTE: fails here!
if err := client.Ping(mgm.Ctx(), readpref.Primary()); err != nil {
return nil, errors.Wrapf(err, "Ping failed to mongodb. cfg: %+v. conStr: %+v. mgmCfg: %+v", cfg, conStr, mgmCfg)
}
return &Client{
cfg: cfg,
mgmCfg: mgmCfg,
client: client,
db: db,
}, nil
}
幫助? 我不知道如何再調試它?
嘗試在您的 DSN 中添加您的 authsource,
就像是
mongodb://USER:PASSWORD@HOST:PORT/DBNAME?authsource=AUTHSOURCE
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.