知识库

错误解释:db 启动失败,原因:org.neo4j.token.api.NonUniqueTokenException: The PropertyKey NamedToken

在尝试启动 Neo4j 时,如果运行的是 Neo4j 4.0.x 版本(其中 x 小于或等于 2),可能会遇到以下错误,并将其记录在 logs\debg.log 中。

Caused by: org.neo4j.kernel.lifecycle.LifecycleException: Component 'org.neo4j.internal.recordstorage.RecordStorageEngine$2@783ae61f' failed to initialize. Please see the attached cause exception "The PropertyKey NamedToken[name:prop1, id:321, internal:false] is not unique, it existed as null.".
        at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.init(LifeSupport.java:426)
        at org.neo4j.kernel.lifecycle.LifeSupport.init(LifeSupport.java:66)
        at org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:102)
        at org.neo4j.kernel.database.Database.start(Database.java:462)
        ... 13 more
Caused by: org.neo4j.token.api.NonUniqueTokenException: The PropertyKey NamedToken[name:prop1, id:321, internal:false] is not unique, it existed as null.

此错误仅在您的环境先前处于 Neo4j 3.5.x 版本,之后升级到 4.0.x 版本(其中 x 小于或等于 2)的情况下才会报告。

Neo4j 4.0.3 及更高版本解决了此错误。如果您遇到了此错误,解决方法是使用 neo4j-admin copy,这是一个离线操作,将读取数据库并创建一个没有底层 data/database/* 文件中错误的新数据库副本。