Ошибка MDB_MAP_FULL при выполнении операций записи в базе данных

Я пытаюсь редактировать метки в своей собственной базе данных lmdb для caffe в python:

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)

Может ли кто-нибудь объяснить мне, что я делаю неправильно?


person Jimmy_st    schedule 02.11.2016    source источник
comment
Этот пост stackoverflow.com/questions/31820976/lmdb-increase-map- размер может помочь.   -  person Dale    schedule 03.11.2016


Ответы (1)


Проблема заключается в том, что текущий размер карты вашего env не может приспособиться к росту вашей базы данных, когда вы выполняете операции записи. Размер карты по умолчанию, предоставляемый lmdb, мал. Таким образом, вы должны указать больший размер карты при открытии вашей среды... используя lmdb.open(path, map_size = size), где size содержит размер карты среды..

Вы также можете увеличить размер карты, используя функцию set_mapsize(map_size) для объекта env. Вы можете найти эту функцию по следующей ссылке lmdb python docs.... Чтобы приспособиться к будущему росту базы данных, вы можете указать размер карты как большое значение, например 1 ГБ...

person dheeraj Vadlani    schedule 04.11.2016