我尝试使用 py2neo 1.6.2 和 neo4j 2.0.1 使用 Cypher 查询创建索引:
graph_db = neo4j.GraphDatabaseService()
query = "CREATE INDEX ON :Label(prop)"
neo4j.CypherQuery(graph_db, query).run()
该查询在 neo4j Web 界面中运行良好,但在 py2neo 中引发死锁错误:
py2neo.neo4j.DeadlockDetectedException:不要惊慌。
已检测到并避免了死锁情况。这意味着两个或多个持有锁的事务想要等待彼此持有的锁,这将导致这些事务之间的死锁。这个异常被抛出而不是最终陷入死锁。
有关如何避免这种情况,请参阅 Neo4j 手册中的死锁部分:http: //docs.neo4j.org/chunked/stable/transactions-deadlocks.html
详细信息:'事务(15438,所有者:“qtp1927594840-9525”)[STATUS_ACTIVE,Resources=1] 无法等待资源 RWLock[SchemaLock],因为 => 事务(15438,所有者:“qtp1927594840-9525”)[STATUS_ACTIVE, Resources=1] <-[:HELD_BY]- RWLock[SchemaLock] <-[:WAITING_FOR]- Transaction(15233, owner:"qtp1927594840-9503")[STATUS_ACTIVE,Resources=1] <-[:HELD_BY]- RWLock[架构锁]'。
标签是否存在都没有关系,请求通常会失败。