Home  >  Article  >  Database  >  MongoDB---出现no write has been done on this connection解决

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

WBOY
WBOYOriginal
2016-06-07 15:56:28959browse

这个问题出现了好几天。日志里面一天出现几十次no write has been done on this connection, 所以研究好几天。 程序那边所做的操作就是在发生问题时,抛出getLastError 然后去查了一下getLastError的方法,W有几个值, 1:任何一台服务器写完即可进行下一步

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

所以研究好几天。

程序那边所做的操作就是在发生问题时,抛出getLastError

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

1:任何一台服务器写完即可进行下一步操作。

2:必须要有2台完成。

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

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

\

以上是官方对几个参数的全部解释。

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

举个例子,w:1,j:true,那么,就必须要一台服务器写操作完成后,并且将操作写进journal,然后才可以进行下一步操作。
 

\

图中可以看到,必须写完journal才能返回有效值。
 

 

\

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

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

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Previous article:Like关联查询Next article:视图与临时表