Neo4j 2.0.0: Query Not Prepared Correctly / Type Mismatch: Expected Map
Join the DZone community and get the full member experience.
Join For FreeI was playing around with Neo4j’s Cypher last weekend and found myself accidentally running some queries against an earlier version of the Neo4j 2.0 series (2.0.0).
My first query started with a map and I wanted to create a person from an identifier inside the map:
WITH {person: {id: 1}} AS params MERGE (p:Person {id: params.person.id}) RETURN p
When I ran the query I got this error:
==> SyntaxException: Type mismatch: expected Map but was Boolean, Number, String or Collection<Any> (line 1, column 62) ==> "WITH {person: {id: 1}} AS params MERGE (p:Person {id: params.person.id}) RETURN p"
If we try the same query in 2.0.1 it works as we’d expect:
==> +---------------+ ==> | p | ==> +---------------+ ==> | Node[1]{id:} | ==> +---------------+ ==> 1 row ==> Nodes created: 1 ==> Properties set: 1 ==> Labels added: 1 ==> 47 ms
My next query was the following which links topics of interest to a person:
WITH {topics: [{name: "Java"}, {name: "Neo4j"}]} AS params MERGE (p:Person {id: 2}) FOREACH(t IN params.topics | MERGE (topic:Topic {name: t.name}) MERGE (p)-[:INTERESTED_IN]->(topic) ) RETURN p
In 2.0.0 that query fails like so:
==> InternalException: Query not prepared correctly!
but if we try it in 2.0.1 we’ll see that it works as well:
==> +---------------+ ==> | p | ==> +---------------+ ==> | Node[4]{id:2} | ==> +---------------+ ==> 1 row ==> Nodes created: 1 ==> Relationships created: 2 ==> Properties set: 1 ==> Labels added: 1 ==> 53 ms
So if you’re seeing either of those errors, then get yourself upgraded to 2.0.1 as well!
Published at DZone with permission of Mark Needham, DZone MVB. See the original article here.
Opinions expressed by DZone contributors are their own.
Comments