python - 对数据库执行写操作时MDB_MAP_FULL错误

标签 python caffe lmdb

我正在尝试在我自己的 lmdb 数据库中为 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: Environment mapsize limit reached

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

lmdb_txn.delete(key)

有人可以解释一下我做错了什么吗?

最佳答案

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

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

关于python - 对数据库执行写操作时MDB_MAP_FULL错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40382460/

相关文章:

python - 带 Bottle 的 MiddleStorm 中间件

python - 在 Django 中使用 manage.py 从 CLI 清除数据库的最简单方法是什么?

python - 创建数组后,如何正确地遍历 CSV 文件中的行数组?

python - 如何将自签名证书添加到 PyCharm?

neural-network - 与 caffe 相比,pycaffe 的训练有多好?

python - TensorFlow 中的 FCN 缺少裁剪层

python - 在 Python 中没有安装 caffe 的情况下从 .caffemodel 中提取权重

linux - Caffe 加载 LMDB 批处理非常慢

python - 更快的 pytorch 数据集文件

linux - LMDB windows 数据库的最大大小