2012-07-03 99 views
4

我正在使用Neo4j圖形數據庫並查看瀏覽器上的數據。所以每當我運行代碼時,我都需要在neo4j-server.properties文件中更改數據庫位置字段。Neo4j:無法鎖定商店

當我嘗試用瀏覽器訪問DB上,我發現了以下錯誤:

Exception in thread "main" java.lang.IllegalStateException: Unable to lock store 
[<DB path>], this is usually a result of some other Neo4j kernel running using 
the same store. 

是否可以查看數據庫沒有鎖定商店?

+0

您的java程序啓動另一個數據庫和瀏覽器的另一個實例。所以有兩個狀態運行相同的數據庫,因此鎖定問題。查看他們的文檔(http://neo4j.com/docs/stable/javadocs/),沒有辦法與現有的實例一起工作。所以我不認爲有辦法獲得更多的鎖。但是在這個鏈接(http://www.tutorialspoint.com/neo4j/neo4j_native_java_api_example.htm)中,最後的註釋說「Ne04J DBA人員會更新數據庫屬性以允許一次一定數量的鎖定」,所以conf文件中也可能有某些內容。 – Rash

回答

1

在啓動neo4j服務器查看數據之前,您確定沒有對數據存儲區運行java進程嗎?

3

還有另一個使用db的進程。例如,您使用另一個程序(例如終端中的gremlin shell)打開它,或者運行另一個neo4j實例。

如果您使用的是類Unix系統(Linux,MacOSX等),那麼您可以使用lsof來確定打開數據庫的進程。舉例來說,如果路徑到我的分貝爲/home/user/db/myneo4j.db,那麼我會尋找:

$ lsof /home/user/db/myneo4j.db/neostore.propertystore.db.index 

或者你可以嘗試:

$ lsof | grep myneo4j.db 

這會告訴你,已經採取的進程ID(鎖定)數據庫。