1

我正在尝试在我自己的 lmdb-database 中为 python 中的 caffe 编辑标签:

def WriteLMDB(lmdbpath):
     lmdb_env = lmdb.open(lmdbpath)
     lmdb_txn = lmdb_env.begin(write=True)
     lmdb_cursor = lmdb_txn.cursor()
     datum = caffe_pb2.Datum()
     for key, value in lmdb_cursor:
          datum.ParseFromString(value)
          datum.label = 100
          lmdb_txn.put(key, datum.SerializeToString())
          lmdb_txn.commit

但是当我运行它时,我有错误:

mdb_put:MDB_MAP_FULL:已达到环境映射大小限制

当我试图通过它的键删除记录时,我遇到了同样的错误:

lmdb_txn.delete(key)

谁能解释我,我做错了什么?

4

1 回答 1

1

问题是当您执行写入操作时,您的环境的当前映射大小无法适应数据库的增长。lmdb 提供的默认映射大小很小。因此,您必须在打开环境时指定更大的地图大小...使用lmdb.open(path, map_size = size)其中 size 包含环境的地图大小。

您还可以使用 env 对象上的函数 set_mapsize(map_size) 来增加地图大小。您可以在以下链接中找到此函数lmdb python docs ....为了适应数据库的未来增长,您可以将地图大小赋予较大的值,例如1GB...

于 2016-11-04T07:27:26.310 回答