在数据库上执行写入操作时出现MDB_MAP_FULL错误

时间:2016-11-02 14:28:13

标签: python caffe lmdb

我试图在我自己的lmdb数据库中为pyffe中的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)

任何人都能解释我,我做错了吗?

1 个答案:

答案 0 :(得分:0)

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

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