MongoDB初始化失败,DuplicateKey

MongoDB initialize failed, DuplicateKey

本文关键字:DuplicateKey 失败 初始化 MongoDB      更新时间:2023-10-16

我想从我的c++应用程序中使用MongoDB,我已经从Git下载了MongoDB二进制版本3.0.5和遗留的c++驱动版本1.0.5,并安装了它们。

我按照指示写了下面的代码:

#include <cstdio>
#include <mongo/bson/bson.h>
#include <mongo/client/dbclient.h>
int main(int argc, char *argv[])
{
  mongo::Status status = mongo::client::initialize();
 return 0;
}

编译和运行后,我得到以下消息:

Attempt to add global initialiser failed, status: DuplicateKey GlobalLogManager Abort

当使用c++ 03(默认)编译的旧驱动程序和c++ 11/c++ 14编译的应用程序代码时,我可以重现相同的行为。它总是分段错误,有时写相同的消息(取决于优化级别)。查看mongo网站上的相关bug。

解决方案是:

    用c++ 03 (-std=c++03)编译你的代码
  • 重新编译支持c++ 11的驱动程序。

对于c++ 11驱动程序的支持,只需将--c++11=on传递给scons

scons --c++11=on install

使用GCC 4.9.1测试