嵌入式GraphDatabaseServer中的Neo4j属性解析错误

时间:2013-04-29 23:43:41

标签: java neo4j

我正在尝试在新机器上加载现有的neo4j数据库。旧机器运行1.9.M05,而新机器运行1.9RC1。我只是将data / graph.db文件从旧安装复制到新安装。

服务器启动正常,webadmin界面看起来一切正常。

但是,当我尝试从Java访问数据库作为EmbeddedDatabase时,我得到以下错误,说它无法解析mapped_memory属性。当我在代码库和neo4j源代码中找到“94M”的“坏值”时,我找不到它的任何提及。 webadmin接口报告mapped_memory属性设置为45M。

如果db文件中存储了错误的值,是否有办法在加载损坏的设置之前强制指定.props文件

主叫代码:

GraphDatabaseFactory factory =                                                                                                                              
    new org.neo4j.graphdb.factory.GraphDatabaseFactory();                                                                                                   
GraphDatabaseService graphDb = factory                                                                                                                      
    .newEmbeddedDatabaseBuilder(DB_PATH)                                                                                                                    
       .loadPropertiesFromFile(NEO_HOME + "conf/neo4j.properties" )                                                                                        
          .newGraphDatabase();                                                                                                                            

例外:

 [java] Exception in thread "main" java.lang.IllegalArgumentException: Bad value '-94M' for setting 'neostore.propertystore.db.strings.mapped_memory': value does not match expression:\d+[kmgKMG]?
 [java]     at org.neo4j.helpers.Settings$DefaultSetting.apply(Settings.java:788)
 [java]     at org.neo4j.helpers.Settings$DefaultSetting.apply(Settings.java:708)
 [java]     at org.neo4j.graphdb.factory.GraphDatabaseSetting$SettingWrapper.apply(GraphDatabaseSetting.java:215)
 [java]     at org.neo4j.graphdb.factory.GraphDatabaseSetting$SettingWrapper.apply(GraphDatabaseSetting.java:189)
 [java]     at org.neo4j.kernel.configuration.ConfigurationValidator.validate(ConfigurationValidator.java:50)
 [java]     at org.neo4j.kernel.configuration.Config.applyChanges(Config.java:121)
 [java]     at org.neo4j.kernel.InternalAbstractGraphDatabase.create(InternalAbstractGraphDatabase.java:337)
 [java]     at org.neo4j.kernel.InternalAbstractGraphDatabase.run(InternalAbstractGraphDatabase.java:254)
 [java]     at org.neo4j.kernel.EmbeddedGraphDatabase.<init>(EmbeddedGraphDatabase.java:90)
 [java]     at org.neo4j.graphdb.factory.GraphDatabaseFactory$1.newDatabase(GraphDatabaseFactory.java:85)
 [java]     at org.neo4j.graphdb.factory.GraphDatabaseBuilder.newGraphDatabase(GraphDatabaseBuilder.java:205)
 [java]     at com.mycompany.CMDRunner.printNeoSegments(CMDRunner.java:27)

2 个答案:

答案 0 :(得分:2)

检查你的neo4j.properties是否为neostore.propertystore.db.strings.mapped_memory,因为这似乎是你的问题所在。

答案 1 :(得分:2)

此错误消息可能是Neo4j中的一个错误,只有在没有足够的物理RAM可用时才会发生。应该有一个更好的错误信息,清楚地表明阻止启动的原因。

尝试为您的计算机添加更多物理RAM,我建议使用1 GB或更多。

错误报告:https://github.com/neo4j/neo4j/issues/746