如何使用 Neo4j 驱动程序通过 IPv6 进行连接?

问题描述 投票:0回答:3

是否可以通过 IPv6 连接到 Neo4j 或 Memgraph 数据库?我正在使用

neo4j-driver
javascript 库,但它似乎无法解析 IPv6 连接字符串:

const driver = neo4j.driver("bolt://fdaa:0:a23f:a7b:c988:dd94:aff3:2:7687"); // Error: getaddrinfo ENOTFOUND fdaa
javascript neo4j memgraphdb
3个回答
1
投票

尝试将 IPv6 地址括在括号中,如下所示

const driver = neo4j.driver("bolt://[fdaa:0:a23f:a7b:c988:dd94:aff3:2]:7687");

我不确定这是否适用于 JS 驱动程序,但这就是使用 Neo4j Python 驱动程序的方法。


1
投票

我用 Javascript 尝试过,但对我来说也不起作用。可能 Neo4j 的 Javascript 驱动程序不支持 ipv6。

我在这里发现https://community.neo4j.com/t5/neo4j-graph-platform/troubleshooting-connection-issues-to-neo4j/m-p/47959可能的解决方案可以是设置标志

dbms.connectors.default_listen_address=::1

但这可能意味着仅配置环回地址将从 IPv6 中解析。

Memgraph 重用了 Neo4J 的 Javascript 驱动程序,因此效果不太好,但是能够连接到 Memgraph 的 GQLAlchemy 确实可以毫无问题地解析 IPv6,代码片段如下:

from gqlalchemy import Memgraph

if __name__ == "__main__":
    memgraph = Memgraph(host='0:0:0:0:0:0:0:1', port=7687)

    memgraph.drop_database()
    
    memgraph.execute("CREATE (n);")
    result = next(memgraph.execute_and_fetch("MATCH (n) RETURN COUNT(n) as cnt;"))
    print(result['cnt'])

唯一的缺点是,它是用 Python 构建的,这不是您首选的语言。


0
投票

实际上,它也适用于 Memgraph:添加如上所述的括号,并确保启动 Memgraph 时将

--bolt-address
参数设置为 ::。您可以在此处查看如何执行此操作。

© www.soinside.com 2019 - 2024. All rights reserved.