我在Windows上使用Neo4j进行测试,并且我正在使用包含约200万个关系和大约相同数量节点的数据库。在我写了一批关系后,我非常关闭了neo4j,数据库被破坏了。
似乎db中存在一些损坏的节点/关系,每当我尝试读取它们时,我都会收到此错误(我使用py2neo):
Error: NodeImpl#1292315 not found. This can be because someone else deleted this entity while we were trying to read properties from it, or because of concurrent modification of other properties on this entity. The problem should be temporary.
我尝试重启但neo4j无法从此错误中恢复。我发现了这个问题: Neo4j cannot read certain nodes. Throws NotFoundException. Corrupt database 但他得到的答案对我没有好处,因为它涉及到遍历数据库并重做索引,我甚至无法读取那些破碎的节点/关系,所以我无法修复它们的索引(试过它并得到了同样的错误。)
一般来说,我对neo4j有很多稳定性问题(在多个平台上,而不仅仅是windows)。如果找不到合适的解决方案,我将不得不切换到另一个数据库。
提前感谢!
答案 0 :(得分:1)
我刚才写了一个工具,它允许你复制一个破损的商店并保持良好的记录完整。
您可能想要查看它。我假设你使用了Nex4j的2.1.x版本。
https://github.com/jexp/store-utils/tree/21
对于2.0.x,请查看:
答案 1 :(得分:0)
要验证您的数据存储是否一致,请按照http://www.markhneedham.com/blog/2014/01/22/neo4j-backup-store-copy-and-consistency-check/中提到的步骤进行操作。
在谈到&#34时,是指batch inserter API同时写了一批关系"?
如果是这样,请注意批处理插件API需要干净关闭,请参阅http://docs.neo4j.org/chunked/stable/batchinsert.html上的大红色警告。
答案 2 :(得分:0)
是否已将断开的节点架构编入索引,并且您是否尝试通过此索引标签/属性读取它们?如果是这样,可能会在突然关机后丢失索引。
假设是这种情况,您可以尝试在服务器未运行时删除图形存储目录中的schema
子目录,并让数据库在重新启动时重建索引。虽然这不是从破损的索引中恢复的官方方法,但它有时可以工作。显然,我建议你在尝试之前备份你的商店。