在RocksDB上插入1亿条记录

时间:2014-10-21 19:21:40

标签: c++ bulkinsert rocksdb

我试图在RocksDB上插入1亿条记录,但是在这行插入287481之后我得到了SIGSEGV:Segmentation fault:

0   ??  /lib/x86_64-linux-gnu/libc.so.6     0x7ffff6086341  
1   rocksdb::Slice::Slice   slice.h 43  0x40efd5    
2   main    main.cpp    75  0x40e857    

这是代码:

int main(int argc, char *argv[]) {
   rocksdb::DB *db;
   rocksdb::Options options;
   options.create_if_missing=true;
   rocksdb::Status status = rocksdb::DB::Open(options,"/tmp/testdb1",&db);
   assert(status.ok());
   for (long var = 0; var < 100000000L; ++var) {
       db->Put(rocksdb::WriteOptions(),""+var,"v"+var);
       qDebug()<<var;
   }
}

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

你不应该添加&#34; k&#34; (const char *)和var(long)。请构造如下字符串:

std :: string key(&#34; k&#34; + std :: to_string(var));

价值也一样。