知识库

错误“Failed to obtain connection towards WRITE server. Known routing table is: Ttl…​”的解释

在 Neo4j 4.0 中,如果您已登录到因果集群的 READ_REPLICA,并执行以下命令以登录 cypher-shell

$ $NEO4J_HOME/bin/cypher-shell -u neo4j -p mypwd

您将会遇到此错误

Failed to obtain connection towards WRITE server.
Known routing table is: Ttl 1589334991968, currentTime 1589334691977,
routers AddressSet=[localhost:7637], writers AddressSet=[],
readers AddressSet=[localhost:7637], database '<default database>'
在 4.0 版本之前,上述命令是完全有效/正确的,用于登录 cypher-shell

原因在于该命令中 address(-a)参数的默认值是 neo4j://:7687

语法在 cypher-shell 命令行帮助中记录为

$ $NEO4J_HOME/bin/cypher-shell -help
 -a ADDRESS, --address ADDRESS
                         address and port to connect to (default: neo4j://:7687)

默认值 neo4j://:7687 的含义是 cypher-shell 将登录命令解释为

$ $NEO4J_HOME/bin/cypher-shell -u neo4j -p mypwd -a neo4j://:7687
上述命令是无效/错误的。neo4j URI 方案是 bolt+routing 在 4.0 中的等价实现,仅应用于连接因果集群中的 CORE 服务器,而不应用于任何 READ REPLICA

为了解决此错误并登录 READ_REPLICAcypher-shell,请改用以下命令

$ $NEO4J_HOME/bin/cypher-shell -u neo4j -p mypwd -a bolt://:7687

当从不同的 Causal Cluster 成员连接到 READ REPLICA 时,可使用如下命令

$ $NEO4J_HOME/bin/cypher-shell -u neo4j -p mypwd -a bolt://<read-replica-server-ip>:7687
本文的关键要点是:如果您使用 neo4jbolt+routing URI 方案,则应连接到 Causal Cluster 中的 CORE 节点,而不是 READ_REPLICA
© . This site is unofficial and not affiliated with Neo4j, Inc.