corwur / cytoscapeneo4j

Cytoscape plugin for neo4j
MIT License
21 stars 7 forks source link

Error executing cypher query - where do I find further details? #7

Closed rmoff closed 4 years ago

rmoff commented 4 years ago

I've successfully connected to Neo4j, and imported some data.

However sometimes using the Import from Cypher query option I enter a query, press import - and nothing happens. In the Cytoscape Task History window I can see Error executing cypher query

image

Where would I find further details on what the actual error is?

thanks.

swarris commented 4 years ago

If there is something wrong with the query itself (syntax errors), the UI will show the error. In other cases there is something wrong with the results or processing. Dropped connection, out of memory error, these kind of things. Best starting point for now is the neo4j log file.

Could you post the query which generates the error?

rmoff commented 4 years ago

No error is shown in the UI. Here's my query:

MATCH (s)-[r:LOOKED_FOR_SSID]->(w) WHERE EXISTS(r.when)  RETURN * LIMIT 1;

If I run this from cypher-shell it works just fine and returns a single row

neo4j> MATCH (s)-[r:LOOKED_FOR_SSID]->(w) WHERE EXISTS(r.when)  RETURN * LIMIT 1;
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| r                                                  | s                                                                                                         | w                          |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| [:LOOKED_FOR_SSID {when: 2020-03-12T17:44:32.172}] | (:source {device_name: "", is_known: FALSE, mac_resolved: "MurataMa_5f:0e:2d", mac: "xxxxxxxxxxx"}) | (:ssid {name: "talktalk"}) |
+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

1 row available after 6 ms, consumed after another 0 ms

Ah, now when I check the neo4j debug.log I see

2020-04-17 08:47:05.514+0000 ERROR [o.n.b.v.m.BoltResponseMessageWriterV1] Failed to write full RECORD Map(w -> (372), s -> (371), r -> -[137709]-) message because: LocalDateTime is not supported as a return type in Bolt protocol version 1. Please make sure driver supports at least protocol version 2. Driver upgrade is most likely required.
rmoff commented 4 years ago

If I cast the datetime attribute to a string, the query succeeds and I get data in Cytoscape

MATCH (s)-[r:LOOKED_FOR_SSID]->(w) WHERE EXISTS(r.when) SET r.when=tostring(r.when) RETURN * LIMIT 1;

Thanks for the pointer to the neo4j log which put me on the right lines to get this working :)

swarris commented 4 years ago

Ah, clear! You could change the pom.xml: <neo4j-java-driver.version>1.4.0</neo4j-java-driver.version> to: <neo4j-java-driver.version>4.0.1</neo4j-java-driver.version> and compile the code from there. I'm not sure this will work given the java version required for Cytoscape. I'll give it a try later myself.

Good to see you found a workable work-around for now!