MemoryError:无法分配内存-BDB2034无法为互斥锁分配内存;调整互斥区域的大小

时间:2018-09-21 16:04:53

标签: python rdflib turtle-rdf

我已经使用rdflib基于乌龟文件(大小约为4.5Gb)创建了一个数据库,并开始使用SPARQL查询该数据库,一切工作都很顺利,但是过了一段时间,我开始出现此错误:

  

MemoryError:(12,'无法分配内存-BDB2034无法为互斥锁分配内存;调整互斥锁区域的大小')

完整输出:

File "/usr/local/lib/python3.6/site-packages/rdflib/graph.py", line 377, in open
    return self.__store.open(configuration, create)
  File "/usr/local/lib/python3.6/site-packages/rdflib/plugins/sleepycat.py", line 167, in open
    self.__namespace.open("namespace", dbname, dbtype, dbopenflags, dbmode)
MemoryError: (12, 'Cannot allocate memory -- BDB2034 unable to allocate memory for mutex; resize mutex region')

最小脚本:

from rdflib import ConjunctiveGraph, Namespace, Literal
from rdflib.store import NO_STORE, VALID_STORE

db_path = "my_db"
g = ConjunctiveGraph('Sleepycat')
# Open the DB
g.open(db_path, create=False) # <--- this line causes the error

我不知道问题的原因,我检查了是否有足够的RAM,CPU使用率和磁盘空间,一切正常,我重新启动了PC,但错误仍然存​​在。

1 个答案:

答案 0 :(得分:0)

从数据库目录中,在控制台中运行下一个命令:

> db_recover

这是一个临时解决方案,因为一段时间后错误再次出现。