【发布时间】:2013-05-02 16:45:05
【问题描述】:
我正在使用 Neo4j 1.8.RC1,并尝试为我的图中的节点生成聚类系数。
我有以下代码,据我所知,它可以在 Linux 系统上运行,但不能在我的 Windows 机器上运行:
Map<String, Object> params = new HashMap<String, Object>();
String query;
String typeString;
if (type == <some type>) {
typeString = "TYPE1";
}
else {
typeString = "TYPE2";
}
params.put("myid", userid);
query = "start a=node(*) match (a)-[:"+ typeString +"]-(b) WITH a, count(distinct b) as n "
+ "match (a)-[:" + typeString + "]-()-[r:"+ typeString+"]-()-[:"+typeString+"]-(a) where a.thisId! = {myid} return n, count(distinct r) as relcount";
ExecutionEngine engine = new ExecutionEngine(graphDb);
ExecutionResult result = engine.execute(query, params);
当我尝试访问结果时,我得到了
Exception in thread "main" java.lang.RuntimeException: org.neo4j.cypher.ParameterNotFoundException: Expected a parameter named myid
我已经通过并验证了它的存在。怎么回事?
【问题讨论】:
-
"我正在使用 Neo4j 1.8.RC1" -- 你的意思是 1.9 RC1?
-
你为什么用1.8RC1? 1.8已经稳定了很长时间了。他们正在使用 1.8.2 版。您很可能遇到了在 1.8.RC1 和 1.8.2 之间修复的错误。
-
简短的回答是升级并非易事。如果有明确的问题需要解决,那很好,但不能升级在目标环境中正常工作的系统。
-
我建议设置一个开发环境并针对 1.8.2 测试您的代码以查看问题是否已解决。如果问题消失,那么您只能选择升级。升级并非易事,是的,但也并非不可能。升级 neo4j 是一种二进制替代品。您必须进行测试,但您需要准备好接受软件更新以修复错误。这就是软件的本质。
-
我同意这是软件的本质。正如我所说,我准备更新以进行必要的错误修复,但由于代码在目标环境中运行良好,我对更新感到胆怯。也就是说,迁移到 1.8.2 似乎已经解决了这个问题,所以我也会在目标环境中进行更新。谢谢!