【发布时间】:2016-07-21 18:23:56
【问题描述】:
我使用 Python Neo4j Bolt 的测试是成功的。在测试期间,我打开了一个图形数据库(我们称之为“First.graphdb”)。然后我打开了另一个python文件,想调用neo4j。这次我打开了另一个图形数据库(我们称之为“Second.graphdb”),但我无法通过。我如何知道我正在使用/更新哪个图形数据库?
【问题讨论】:
我使用 Python Neo4j Bolt 的测试是成功的。在测试期间,我打开了一个图形数据库(我们称之为“First.graphdb”)。然后我打开了另一个python文件,想调用neo4j。这次我打开了另一个图形数据库(我们称之为“Second.graphdb”),但我无法通过。我如何知道我正在使用/更新哪个图形数据库?
【问题讨论】:
如果您对同一主机使用两个加密连接,您将遇到 SSL 证书问题。
如果您执行以下操作,您将收到ProtocolError,说明第二个连接的服务器证书与第一个连接的已知证书不匹配:
from neo4j.v1 import GraphDatabase, basic_auth
g1 = GraphDatabase.driver('bolt://localhost:7687')
with g1.session() as s:
s.run('MATCH (a) RETURN a')
g2 = GraphDatabase.driver('bolt://localhost:7787')
with g2.session() as s:
s.run('MATCH (a) RETURN a')
错误信息是:
ProtocolError: Server certificate does not match known certificate for 'localhost';
check details in file '/Users/someuser/.neo4j/known_hosts'
如果您使用未加密的连接(通过将encrypted=False 添加到driver()),它可以工作。
简单的解决方法是在使用第一个数据库后删除known_hosts文件。但是,如果您同时使用两者,这将导致大量开销。如果两个数据库都在不同的主机上运行,你也应该没问题。除此之外,我对处理证书等不太了解。也许有一种方法可以告诉驱动程序哪个端口上的哪个数据库属于哪个证书。
【讨论】: