gpt4 book ai didi

c++ - 查询后未返回任何结果的 MongoDB 套接字异常

转载 作者:太空宇宙 更新时间:2023-11-04 14:09:01 24 4
gpt4 key购买 nike

  • 现在,在下面的简化代码段中,如果我的查询返回结果,一切都好。

  • 如果查询没有返回结果,那么一切仍然按预期进行,抛出并捕获异常。

  • 在这个查询之后,如果我尝试执行另一个查询,语句 dbConn->query(collection, queryObj) 抛出一个 mongo::SocketException。打印的消息是:

    socket exception [SEND_ERROR] for 127.0.0.1:27017//9001 socket exception [2] server [127.0.0.1:27017]

  • 从这一次开始,以下查询都抛出相同的异常,但消息不同:localhost:27017 的套接字异常 [FAILED_STATE]//9001 套接字异常 [5] 服务器 [localhost:27017]

  • 我也打印出了错误代码字符串,都是“Unknown error”。

  • 如果我重新启动进程,它会重置,因此我假设连接因某种原因损坏。目前没有其他人正在访问共享 ptr。 mongo 守护进程运行良好,mongodb 日志中没有任何异常。

  • 我的大问题是:为什么会发生?

片段:

try
{
// Some initialzation here..
// dbConn is a boost::shared_ptr<mongo::DBClientConnection>

std::auto_ptr<mongo::DBClientCursor> cursor = dbConn->query(collection, queryObj);
if (!cursor->more())
{
throw Exception();
}
}
catch(const Exception&)
{

}
catch(const mongo::SocketException& e)
{
std::cout << ex.what() << "//" << ex.toString() << std::endl;
}

MongoDB C++驱动版本为2.3.2。

最佳答案

我假设您在代码中的其他位置获取并初始化连接,希望避免每次需要时获取该连接的开销。 (我最初也在我的代码中这样做了)。

我认为您会发现在使用 ScopedDbConnection 时更靠近连接获取并从驱动程序获取新连接将有助于事情的进展;驱动程序似乎能够很好地管理连接。

关于c++ - 查询后未返回任何结果的 MongoDB 套接字异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15663484/

24 4 0
文章推荐: html - CSS Style类类继承解决方法
文章推荐: javascript - JQuery IE
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com