我有一个名为storyfactory 的 mlab MongoDB 数据库。该数据库有一个名为 test 的集合,其中有一个名为 Standard 且带有密码的用户。
我正在尝试使用此Driver
连接到数据库。
这是代码:
package main
import (
"context"
"fmt"
"log"
"time"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/mongo"
"go.mongodb.org/mongo-driver/mongo/options"
)
func main() {
ctx, _ := context.WithTimeout(context.Background(), 10*time.Second)
client, err := mongo.Connect(ctx, options.Client().ApplyURI("mongodb://<Standard>:<Password>@ds127101.mlab.com:27101/storyfactory"))
if err != nil {
log.Fatal(err)
}
collection := client.Database("storyfactory").Collection("test")
ctx, _ = context.WithTimeout(context.Background(), 5*time.Second)
res, err := collection.InsertOne(ctx, bson.M{"name": "pi", "value": 3.14159})
if err != nil {
log.Fatal(err)
}
fmt.Println(res.InsertedID)
}
Run Code Online (Sandbox Code Playgroud)
如果我尝试运行此代码,我会得到以下输出:
2019/03/12 18:09:04 auth error: sasl conversation error: unable to authenticate …Run Code Online (Sandbox Code Playgroud) 我有以下Go Code可以连接到我的Mongo Cloud数据库:
func connectToDataBase() {
ctx, cancel := context.WithTimeout(context.Background(), 20*time.Second)
defer cancel()
client, err := mongo.Connect(ctx, options.Client().ApplyURI(dbURL))
if err != nil {
log.Fatal("Error connecting to Database: ", err.Error())
}
DB = client.Database("storyfactory")
}
Run Code Online (Sandbox Code Playgroud)
我已经在Windows计算机上运行了此代码,并且可以正常工作。现在,我尝试在ubuntu上运行它,并且出现以下错误:
2019/04/13 00:20:37 Error connecting to Database: error parsing uri (mongodb+srv://User:Password@cluster0-gpxjk.gcp.mongodb.net/test?retryWrites=true): lookup cluster0-gpxjk.gcp.mongodb.net on 127.0.0.53:53: cannot unmarshal DNS message
exit status 1
Run Code Online (Sandbox Code Playgroud)
我不知道为什么它可以在Windows上运行,而现在却不在ubuntu上。
谢谢你的帮助!