Neo4j随机查询抛出错误

时间:2018-03-09 16:45:23

标签: neo4j

我在本地计算机上使用neo4j已经有一段时间了,它看起来效果很好,但突然出现一个特定的查询我收到此错误消息(所有其他查询工作正常):

WebSocket连接失败。由于Web浏览器中的安全限制,此Neo4j驱动程序无法使用此故障原因。请使用您的浏览器开发控制台确定失败的根本原因。常见原因包括数据库不可用,使用错误的连接URL或临时网络问题。如果您已启用加密,请确保您的浏览器配置为信任Neo4j配置使用的证书。 WebSocket readyState是:3

我尝试运行的查询是:

match (p:Node1)-[c:Relation]->(q:Node2)
SET c.attribute = false;

每个其他查询都运行正常,我可以设置我想要的任何属性,只是对于这个查询,控制台计算一段时间,pc开始滞后然后抛出异常。也许是超时问题还是什么?

我在几篇帖子中看到,它可能与我的Java版本有关?我使用的是oracle-8 java版本:

 "1.8.0_161" Java(TM) SE Runtime Environment (build 1.8.0_161-b12)
 Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode)

任何人都知道我可以尝试什么?

我也尝试在conf文件中取消注释这些行,但它没有帮助。

# You can also choose a specific advertised hostname or IP address, and
# configure an advertised port for each connector, by setting their
# individual advertised_address.
# Bolt connector
dbms.connector.bolt.enabled=true
#dbms.connector.bolt.tls_level=OPTIONAL
dbms.connector.bolt.listen_address=0.0.0.0:7687

非常感谢您的意见和建议。

干杯

2 个答案:

答案 0 :(得分:1)

看到您有大约2500万个关系要处理,在单个事务中执行所有这些关系是行不通的。需要对这种大小的写操作进行批处理,以免烧坏堆或挂起Neo4j。

APOC Procedures是您最好的选择,它支持输入查询和executing operations upon that input in batches

以下是您可以将此用于查询的方式:

CALL apoc.periodic.iterate(
"match (:Node1)-[c:Relation]->(:Node2)
 return c", 
"SET c.attribute = false", 
{iterateList:true, parallel:false}) YIELD batches, errorMessages
RETURN *

答案 1 :(得分:0)

修改文件$NEO4J_HOME/conf/neo4j.conf并取消注释第dbms.connector.bolt.address=0.0.0.0:7687行。之后,重启Neo4j。