无法获取与Neo4j数据库的连接

时间:2018-02-28 21:22:24

标签: python neo4j

我正在尝试从新机器连接到我的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)。所以连接来检查密码,但我仍然无法连接正确的身份验证。

发生了什么事?

2 个答案:

答案 0 :(得分:1)

我也有同样的问题,并证明驱动程序是问题。

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

答案 1 :(得分:0)

尝试取消注释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