2016-11-02 8 views
0

Я пытаюсь изменить ярлыки в моей lmdb-базы данных для CAFFE в Python:ошибка MDB_MAP_FULL при операции записи выполняются на базе

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: Environment mapsize limit reached

у меня такая же ошибка, когда я просто пытаюсь удалить запись по его ключ:

lmdb_txn.delete(key) 

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

+0

Это сообщение http : //stackoverflow.com/questions/31820976/lmdb-increase-map-size может помочь. – Dale

ответ

0

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

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