【问题标题】:Cannot acquire connection to Neo4j database无法获取到 Neo4j 数据库的连接
【发布时间】:2018-03-09 05:32:48
【问题描述】:

我正在尝试从一台新机器连接到我的 Neo4j 图形数据库服务器。我可以从旧机器成功连接,但不想再使用旧机器。

我已将问题简化为一个返回异常的简单脚本:

from neo4j.v1 import GraphDatabase, basic_auth

auth = basic_auth("username","password")
session = GraphDatabase.driver("bolt://remote.server:7687",auth=auth).session()

statement = """MATCH (a:Protein)
WHERE a.name={name}
RETURN a.Accession"""

tx = session.begin_transaction()
record = tx.run(statement,{'name':"ARCH_HUMAN"}).single()
print record['a.Accession']

session.close()

错误信息是:

File "Test.py", line 10, in <module>
    tx = session.begin_transaction()
File "/home/username/anaconda2/lib/python2.7/site-packages/neo4j/v1/api.py", line 432, in begin_transaction
    self._connect()
  File "/home/username/anaconda2/lib/python2.7/site-packages/neo4j/v1/api.py", line 269, in _connect
self._connection = self._acquirer(access_mode)
  File "/home/username/anaconda2/lib/python2.7/site-packages/neo4j/v1/direct.py", line 52, in acquire
raise ServiceUnavailable("Cannot acquire connection to {!r}".format(self.address))
neo4j.exceptions.ServiceUnavailable: Cannot acquire connection to Address(host='remote.server', port=7687)

端口 7687 已打开(通过 netstat -tulpniptables -L 确认),neo4j 配置为监听 0.0.0.0:7687。此外,.neo4j/known_hosts 包含主机 0.0.0.0 的条目

奇怪的是,如果我使用不正确的密码破坏了身份验证,我会收到不同的错误消息 (neo4j.exceptions.AuthError)。所以连接 是为了检查密码,但我仍然无法连接正确的身份验证。

发生了什么事?

【问题讨论】:

  • 有一个similar question,没有接受的答案。
  • @cybersam 这个问题似乎是指定端口号,这里有
  • 我发现如果我从 neo4j-driver v1.5.3 降级到 v1.1.0b1 上面的脚本可以工作。我不会将此添加为接受它的答案,因为我喜欢最新版本的答案

标签: python neo4j


【解决方案1】:

我也遇到了同样的问题,结果证明是驱动程序的问题。

我做了一些实验,发现它适用的最后一个驱动程序是neo4j-driver==v1.1.0,但下一个版本neo4j-driver==v1.2.0由于某种原因停止工作。

【讨论】:

    【解决方案2】:

    尝试取消注释dbms.connectors.default_listen_address=0.0.0.0 并检查此

    # Bolt connector
    dbms.connector.bolt.enabled=true
    dbms.connector.bolt.tls_level=OPTIONAL
    dbms.connector.bolt.listen_address=:7687
    # HTTP Connector. There must be exactly one HTTP connector.
    dbms.connector.http.enabled=true
    dbms.connector.http.listen_address=:7474    
    # HTTPS Connector. There can be zero or one HTTPS connectors.
    dbms.connector.https.enabled=true
    dbms.connector.https.listen_address=:7473
    

    【讨论】:

    • 我注释了dbms.connectors.default_listen_address 行,但是dbms.connector.bolt.listen_address=0.0.0.0:7687dbms.connector.http.listen_address=0.0.0.0:7474 这不是做同样的事情吗?
    • 是的,一样。日志文件中有什么?
    • 日志文件中没有关于尝试连接的任何内容
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-12
    • 1970-01-01
    • 1970-01-01
    • 2017-08-01
    相关资源
    最近更新 更多