MongoDB---出现no write has been done on this connection解决方式

no write has been done on this connection

这个问题出现了好几天。日志里面一天出现几十次no write has been done on this connection

所以研究好几天。

程序那边所做的操作就是在发生故障时。抛出getLastError

然后去查了一下getLastError的方法,W有几个值,

1:不论什么一台server写完就可以进行下一步操作。

2:必需要有2台完毕。

0:则是不考虑写完毕与否,继续写操作。

另一个数值就是majority。查看官方文档后。我的理解是。大于2的值都用majority。以下是官方的解释

以上是官方对几个參数的所有解释。

另一个值是j,true,false,true就打开日志记录。

举个样例。w:1,j:true,那么,就必需要一台server写操作完毕后,而且将操作写进journal,然后才干够进行下一步操作。

图中能够看到。必须写完journal才干返回有效值。

从红线部分,能够看出,majority会替代大于2的数字,

回到题目,报那个错,最后发现是版本号问题。我们能够通过下面方法验证,在2.2上,对一个空集合进行remove操作,然后立即输入getLastError(w:1),就会返回题目的错误。可是在2.6上,就不会。

原文地址:https://www.cnblogs.com/yjbjingcha/p/7343874.html