2012-01-10 97 views
0

我有一個C++函數,它使用C++驅動程序將文檔保存到MongoDB。它需要連接引用作爲參數:如何使用C++驅動程序重新連接到MongoDB?

http://pastebin.com/jwRDhNWQ

當我重新啓動MongoDB中,我可以看到,新的連接正在取得進展。 但是,conn.isFailed()保持爲真。

這可能發生由於這樣的事實,當我重新連接,我使用conn,而不是&conn 當我使用&conn&conn.connect("localhost");,我得到錯誤MESSAGE-

error: lvalue required as unary ‘&’ operand 

我該如何解決這個問題?即修改底層連接,以便conn.isFailed()在建立新連接時變爲false?

+0

你的問題與使用'&'操作符或沒有關係。如果您嘗試使用'&',那麼它只會嘗試獲取'connect'方法的返回值的地址。相反,請檢查您是否正確斷開/重新連接? – 2012-01-10 08:21:05

+0

是的,我可以看到在MongoDB日誌中重新連接成功 – user837208 2012-01-10 08:40:53

回答

1

您應該在mongo :: DBClientConnection :: DBClientConnection構造函數中啓用_autoReconnect。
http://api.mongodb.org/cplusplus/current/classmongo_1_1_d_b_client_connection.html#a6a1a348024dd302572504b7bfb6e74a2

直到_check連接被調用時,方法返回的變量_failed isfailed()纔會被設置。在將某些內容發送到數據庫之前不會調用_checkConnection,因此,在調用_isFailed之前,可以調用ping命令。但是,建議的修復方法是啓用_autoReconnect。

+0

謝謝!我將繼續在構造函數中啓用_autoReconnect – user837208 2012-01-10 21:34:33

相關問題