我已经在本地机器上使用neo4j一段时间了,它似乎运行良好,但是突然对于一个特定的查询,我收到此错误消息(所有其他查询都工作正常):
网络套接字连接失败。由于您的 Web 浏览器中的安全限制,此 Neo4j 驱动程序无法获得失败的原因。请使用浏览器开发控制台来确定故障的根本原因。常见原因包括数据库不可用、使用错误的连接 URL 或临时网络问题。如果您已启用加密,请确保您的浏览器配置为信任 Neo4j 配置为使用的证书。WebSocketreadyState
为:3
我尝试运行的查询是这样的:
match (p:Node1)-[c:Relation]->(q:Node2)
SET c.attribute = false;
其他每个查询都工作正常,我可以设置我想要的任何属性,只是对于这个查询,控制台计算一段时间,电脑开始滞后,然后抛出异常。也许是超时问题或其他什么?
我在几篇文章中看到,它可能与我的 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
提前非常感谢您的想法和建议。
干杯
看到您有大约 2500 万个关系要处理,在单个事务中执行所有这些关系是行不通的。这种规模的写入操作需要批处理,以免破坏堆或挂起 Neo4j。
APOC 过程是你最好的选择,它支持接受输入查询并批量执行对该输入的操作。
下面介绍了如何将其用于查询:
CALL apoc.periodic.iterate(
"match (:Node1)-[c:Relation]->(:Node2)
return c",
"SET c.attribute = false",
{iterateList:true, parallel:false}) YIELD batches, errorMessages
RETURN *
$NEO4J_HOME/conf/neo4j.conf
编辑文件并取消注释行dbms.connector.bolt.address=0.0.0.0:7687
。之后,重新启动 Neo4j。