我是一个C ++函数,它使用C ++驱动程序将文档保存到MongoDB。它将连接引用作为参数:
当我重新启动MongoDB时,我可以看到正在建立新的连接。 但是,conn.isFailed()仍然是正确的。
这种情况可能会发生,因为当我重新连接时,我使用的是conn
而不是&conn
当我在&conn
中使用&conn.connect("localhost");
时,会收到错误消息 -
error: lvalue required as unary ‘&’ operand
我该如何解决这个问题?即修改底层连接,以便在建立新连接时conn.isFailed()变为false?
答案 0 :(得分:1)
您应该在mongo :: DBClientConnection :: DBClientConnection构造函数中启用_autoReconnect。
http://api.mongodb.org/cplusplus/current/classmongo_1_1_d_b_client_connection.html#a6a1a348024dd302572504b7bfb6e74a2
在调用_check Connection之前,方法isfailed()返回的变量_failed不会设置。在将某些内容发送到数据库之前不会调用_checkConnection,因此可以在调用_isFailed之前调用ping命令。但是,建议的修复方法是启用_autoReconnect。