2015-07-10 63 views
8

我很长时间以来一直在讨论这个问题。如果Neo4j事务没有正确关闭(提交或回滚)(这可能是由于例外,或者在事务中间死亡/退出等),那么Neo4j不会释放锁定。如果交易未关闭,Neo4j数据库被锁定

为了解决我需要停止Neo4j并再次启动Neo4j。这不应该被要求。

我在Server Configurations检查它有一个配置org.neo4j.server.transaction.timeout=60其中默认为60秒。所以如果默认情况下这个设置适用于我,那么应该发生60秒的超时。

如何检查数据库是否被锁定?如何通过代码或配置轻松避免或移除数据库锁定?我正在使用最新的Neo4j 2.2.3。

+0

也许你可以解释你如何使用Neo4j?哪些驱动程序和API? –

+1

我从来没有见过被锁起来。通常,如果您自己处理来自java代码的事务,只要确保使用try-with-resource,以便每个tx都能正确关闭。 –

+0

@MichaelHunger:我正在使用[PHP]语言。我在PHP中使用try catch块并在catch中使用回滚事务。我应该做什么? –

回答

4

如果您使用的驱动程序正在使用transactional Cypher endpoint,则需要重新检查。超时只适用于那个。

所以我怀疑你是使用old cypher endpoint这是不知道超时。

+0

如何检查哪个端点?我使用PHP和[Neo4j PHP库](https://github.com/jadell/neo4jphp)。通过这个库,我只是在事务中添加密码查询语句。 –

+1

看看源码luke ;-)认真:neo4j有超过一个php库在那里。 –