【问题标题】:ExecutionEngine not recognizing parameterExecutionEngine 无法识别参数
【发布时间】: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 似乎已经解决了这个问题,所以我也会在目标环境中进行更新。谢谢!

标签: java neo4j cypher


【解决方案1】:

正如上面的 cmets 所指出的,通过从 1.8.RC1 更新到 1.8.2 解决了这个问题。虽然我没有要指出的错误报告,但这显然是 Neo4j 中的一个错误,在这些版本之间的某个地方得到了解决。

【讨论】:

    猜你喜欢
    • 2019-07-14
    • 2013-08-09
    • 2015-02-17
    • 1970-01-01
    • 2021-09-28
    • 2021-08-16
    • 2021-07-16
    • 2012-07-30
    • 1970-01-01
    相关资源
    最近更新 更多