我正在尝试从新机器连接到我的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 -tulpn
和iptables -L
确认),neo4j配置为侦听0.0.0.0:7687。此外,.neo4j/known_hosts
包含主机0.0.0.0的条目
奇怪的是,如果我使用不正确的密码破解身份验证,则会收到不同的错误消息(neo4j.exceptions.AuthError)。所以连接是来检查密码,但我仍然无法连接正确的身份验证。
发生了什么事?
答案 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