2016-07-26 96 views
1

我想通过shell在neo4j 3.0.3上运行一个简单的密码查询。我的查询如下:在neo4j 3.0中为变量指定路径时出错

MATCH p=(me)<-[:contains*1..10000]-(end) RETURN p; 

当我尝试运行此查询我得到以下错误:

WARNING: Invalid input '=': expected an identifier character, node labels, a property map, a relationship pattern, ',', USING, WHERE, LOAD CSV, START, MATCH, UNWIND, MERGE, CREATE, SET, DELETE, REMOVE, FOREACH, WITH, CALL, RETURN, UNION, ';' or end of input (line 1, column 8 (offset: 7)) "MATCH p=(me)<-[:contains*1..10000]-(end) RETURN p" ^

当我告诉shell来取悦CYPHER使用2.3版本,运行相同的查询一切都很好:

CYPHER 2.3 MATCH p=(me)<-[:contains*1..10000]-(end) WHERE id(me)=51 AND ALL(x in nodes(p) WHERE x.rtype <> 'unknown') AND NOT (end)<-[:contains]-(:res) AND end.rtype='project' RETURN p; 

当我删除的路径的分配到变量p如例如在下面的查询:○

MATCH (me)<-[:contains*1..10000]-(end) RETURN me; 

此查询执行得很好。

我已阅读密码手册,并找到吨的例子,使用匹配子句分配路径的变量,就像我的代码。

任何线索我做错了什么?

+0

我无法重现错误。您是否编辑过要添加“CYPHER 2.3”的行或者是否再次输入了该行?你确定你没有设法输入一个看起来像“=”的不同的字符吗? –

+0

@FrankPavageau:请参阅下面的答案。这实际上是一个maven依赖问题。感谢您对此进行调查。 – Valentin

回答

0

原来这实际上是项目设置的问题。我在由maven管理的大型项目中使用neo4j。设置是这样的,旧版本的parboiled重写了neo4j 3使用的版本。这个较旧的版本无法成功解析这些查询。