是否可以通过 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
尝试将 IPv6 地址括在括号中,如下所示
const driver = neo4j.driver("bolt://[fdaa:0:a23f:a7b:c988:dd94:aff3:2]:7687");
我不确定这是否适用于 JS 驱动程序,但这就是使用 Neo4j Python 驱动程序的方法。
我用 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 构建的,这不是您首选的语言。