วันพฤหัสบดีที่ 21 พฤษภาคม พ.ศ. 2558

วิธีใช้ mongodb3.0 กับ golang

ปรกติแล้วเวลาเขียน  go ต่อกับ mongodb ผมจะใช้ lib ตัวนี้คือ

        "gopkg.in/mgo.v2"

        "gopkg.in/mgo.v2/bson"

วันนี้ลองใช้กับ mongodb 3.0.3 มัน auth ไม่ผ่านขึ้นมาประมาณนี้

server returned error on SASL authentication step: Authentication failed.

ไปค้นๆดูเจอปัญหาและวิธีแก้ดังนี้
ปัญหาเกิดจากรูปแบบการ auth ของ mongodb 3.0 เปลี่ยนจาก version เก่าใน ตัวแปร authSchema  ใช้เป็น version 5 ตัว auth ของ lib ที่ใช้อยู่จะใช้ได้กับ version 3 โดยเราสามารถแก้ได้ดังนี้

login mongo โดยใช้ admin user หรือไปเป็น noauth ใน config file แล้ว start mongodb แล้วค่อยสั่ง mongo

> db.system.version.find()
{ "_id" : "authSchema", "currentVersion" : 5 }

จะเห็นว่าเป็น version 5 อยู่ให้ใช้คำสั่งดังนี้

> db.system.version.update({ "_id" : "authSchema"},{$set: {"currentVersion" : 3} })
WriteResult({ "nMatched" : 1, "nUpserted" : 0, "nModified" : 1 })
> db.system.version.find()
{ "_id" : "authSchema", "currentVersion" : 3 }

แค่นี้เราก็สามารถใช้ golang กับ mongodb version 3 ได้แล้ว
ใครแก้ config file เป็น noauth ก็อย่าลืมแก้กลับก่อนด้วยหละเดี๋ยวจะหาว่าไม่เตือน

ไม่มีความคิดเห็น:

แสดงความคิดเห็น