2015-07-10 66 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庫在那裏。 –