Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
非正常停机后neo4j损坏/损坏_Neo4j_Cypher_Py2neo - Fatal编程技术网

非正常停机后neo4j损坏/损坏

非正常停机后neo4j损坏/损坏,neo4j,cypher,py2neo,Neo4j,Cypher,Py2neo,我在windows上使用Neo4j进行测试,我使用的数据库包含约200万个关系和大约相同数量的节点。在我编写一批关系时意外关闭了neo4j之后,db被破坏了 数据库中似乎有一些断开的节点/关系,每当我尝试读取它们时,就会出现此错误(我使用的是py2neo): 我尝试重新启动,但neo4j无法从该错误中恢复。我发现这个问题: 但是他得到的答案对我没有好处,因为它涉及到检查数据库并重新建立索引,我甚至无法读取那些断开的节点/关系,因此我无法修复它们的索引(尝试了之后,得到了相同的错误) 总的来说,我

我在windows上使用Neo4j进行测试,我使用的数据库包含约200万个关系和大约相同数量的节点。在我编写一批关系时意外关闭了neo4j之后,db被破坏了

数据库中似乎有一些断开的节点/关系,每当我尝试读取它们时,就会出现此错误(我使用的是py2neo):

我尝试重新启动,但neo4j无法从该错误中恢复。我发现这个问题: 但是他得到的答案对我没有好处,因为它涉及到检查数据库并重新建立索引,我甚至无法读取那些断开的节点/关系,因此我无法修复它们的索引(尝试了之后,得到了相同的错误)

总的来说,我在neo4j上遇到过很多稳定性问题(在多个平台上,而不仅仅是在windows上)。如果这个问题找不到合适的解决方案,我将不得不切换到另一个数据库


提前谢谢

要验证数据存储是否一致,请执行中提到的步骤

你是说“写一批关系”吗


如果是这样,请注意batch inserter API需要完全关闭,请参阅上的大红色警告。

断开的节点架构是否已索引,您是否尝试通过此索引标签/属性读取它们?如果是这样的话,在突然停机后,您可能会出现索引中断


假设是这种情况,您可以尝试在服务器未运行时删除graph store目录中的
schema
子目录,并让数据库在重新启动时重建索引。虽然这不是一种从受损索引中恢复的官方方法,但它有时也能起作用。显然,我建议您在尝试此操作之前备份您的存储。

我不久前编写了一个工具,允许您复制损坏的存储并保留完好的记录

你可能想看看。我假设您使用了Neo4j的2.1.x版本

对于2.0.x,请查看:


我尝试编写一个脚本来查询所有节点(显然由于上面的异常而失败),然后从异常字符串中获取问题节点的id并将其删除。我想在一个循环中运行它,直到没有更多的错误,但是当我执行删除部分时,我得到了这个错误:文件“C:\Python27\lib\site packages\py2neo\neo4j.py”,第1076行,在执行raise CustomCypherError(e)InvalidRecordException:PropertyRecord[2083536]时我正在考虑使用neo4j作为主数据存储。您是否能够修复损坏问题,或者是否已切换到其他数据库?Neo4j看起来非常适合我正在构建的应用程序,但我担心可靠性。谢谢你好,文卡特D,我真的不知道,因为我已经不再从事那个项目了。老实说,neo4j感觉很不稳定,我对它不太满意,但我不知道其他选择是否更好。另外,在使用它时,我对基于节点的dbs非常陌生,因此这可能会导致混乱。我正在使用“py2neo.neo4j.WriteBatch()”,这是我在本文档中找到的:是吗?那里没有大红色警告。。它说“这样的请求也有在单个事务中执行的优势。”所以听起来好像它不是您发送给我的?不,这不是批处理插入器API,因为批处理插入器API没有事务的概念。确保使用一致性检查器。一致性检查器有什么好处?我已经知道数据库已经损坏,甚至损坏节点的ID(看起来它们存在,但没有一个属性记录,这会弄乱neo4j)。所以我很想知道如何修复它。顾名思义,一致性检查器将检查一致性。修复损坏的存储区是一项非常重要的任务,需要大量基于对内部数据结构的深入了解的手动工作。学习这些的最好方法是阅读在的单元测试,因为我在一家初创公司工作,时间和资源非常有限,我正在寻找一个简单的解决方案,无法深入研究neo4j。无论如何,谢谢。但是索引没有问题(我实际上删除了他们所在的整个索引,以防万一)。即使是一个简单的查询,例如“START z=node(*)RETURN z”,在到达断开的节点时也会调用错误。谢谢,我将在本周的某个地方进行研究,并更新结果。
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.