neo4j数据库一致性错误

时间:2013-08-28 14:51:46

标签: neo4j

前段时间我们有一些托管服务提供商存储问题,并且(不确定这是否适用于我们的问题)现在我们在数据库中存在一些一致性问题。使用空的graph.db文件夹启动干净的从站,不会导致从主机创建完整的副本数据。

此外,在进行备份时,我们始终会收到一致性检查错误:

Full consistency check
....................  10%
....................  20%
....................  30%
....................  40%
....................  50%
....................  60%
....................  70%
....................  80%
...........2013-08-28 08:50:28.184+0000 INFO  [org.neo4j]: ERROR: The next block is not in use.
        DynamicRecord[2987807,used=true,light=false(120),type=0,data=byte[size=120],next=2987808]
        Inconsistent with: DynamicRecord[2987808,used=false,light=false(105),type=0,data=byte[size=105],next=-1]
.........  90%
...................2013-08-28 08:50:29.653+0000 INFO  [org.neo4j]: WARNING: The name is empty.
        PropertyIndexRecord[2035,in use,nameId=2036,propCount=0]
        Inconsistent with: DynamicRecord[2036,used=true,light=false(0),type=0,data=byte[],next=-1]
2013-08-28 08:50:29.657+0000 INFO  [org.neo4j]: WARNING: The block is empty.
        DynamicRecord[2036,used=true,light=false(0),type=0,data=byte[],next=-1]
. 100%
2013-08-28 08:50:29.658+0000 INFO  [org.neo4j]: Inconsistencies found: ConsistencySummaryStatistics{
        Number of errors: 1
        Number of warnings: 2
        Number of inconsistent STRING_PROPERTY records: 1

我无法找到/ google以任何方式解决此问题,没有“mysqlcheck”替代方案或“修复表”工具,没有...

任何帮助/提示都会受到极大关注......

谢谢, 的Andrija

1 个答案:

答案 0 :(得分:4)

Neo4j没有提供任何方法来执行此操作。如果可能,您最好的选择可能是加载较旧的备份。

问题是,如果你删除这些损坏的记录,neo4j将会对某些逻辑进行一致性检查(例如删除一个关系将寻找下一个与前一个关联的关系),所以你将无法通过普通的API删除它们。

Neo4j可能能够提供一些可以清除这些不良记录的验证程序,但这是人们想要的东西吗?这些记录大部分都无法恢复,因为大多数这些记录都是Neo4j中某种类型的链接列表条目,一旦丢失了引用,就不知道它属于哪个列表。