MongoDB常见报错
1.插入数据时报错
WriteResult({
"writeError" : {
"code" : 13,
"errmsg" : "not authorized on dba to execute command {
insert: \"test\", ordered: true, lsid: { id: UUID
(\"0307da24-4969-4613-bbe2-72c3a9a188bf\") }, $db: \"dba\" }"
}
})
解决方法:给用户设置对应控制权限
db.createUser({
user: "doker",
pwd: "dm123",
roles: [{
role: "readWrite",
db: "testWrite"
}, {
role: "read",
db: "dba"
}]
})
2.在副本集环境下,在从库无法进行读取操作,这是正常的,因为MongoDB的slave默认是不可读写的
2020-12-29T22:19:02.417+0800 E QUERY [thread1] Error: listCollections failed: {
"operationTime" : Timestamp(1609251538, 1),
"ok" : 0,
"errmsg" : "not master and slaveOk=false",
"code" : 13435,
"codeName" : "NotMasterNoSlaveOk",
"$clusterTime" : {
"clusterTime" : Timestamp(1609251538, 1),
"signature" : {
"hash" : BinData(0,"AAAAAAAAAAAAAAAAAAAAAAAAAAA="),
"keyId" : NumberLong(0)
}
}
} :
解决方法有两种:
(1)临时解决方法,在从库执行
rs.slaveOk();
注意:当执行这条命令时会有一个警告,意思是这条参数可能在以后的版本弃用了,将会用 secondaryOk()代替
“WARNING: slaveOk() is deprecated and may be removed in the next major release. Please use secondaryOk() instead.”
(2)永久生效,在root目录下有一个.mongorc.js的文件,将这个参数写进去就可以了
echo "rs.slaveOk();" >> .mongorc.js
学海无涯,不进则退,日积跬步,以至千里。本博客所写内容仅为个人在学习和研究过程中的一些心得体会及总结笔记,仅代表个人观点。一切以官方为准,版本差异请自行甄别

浙公网安备 33010602011771号