簡體   English   中英

禁用Neo4j圖形數據庫的鎖定?

[英]Disable locking of Neo4j graph database?

我的應用程序在/tmp/import.db填充Neo4j圖形數據庫。 除了我的單元測試,我還想使用Neo4j瀏覽器(AKA Neo4j社區)在同一個數據庫中進行一些挖掘。 當瀏覽器運行時,我的應用程序在運行時崩潰,因為它被鎖定的數據庫:

Exception in thread "main" java.lang.RuntimeException: Error starting org.neo4j.kernel.EmbeddedGraphDatabase, /tmp/import.db
    at org.neo4j.kernel.InternalAbstractGraphDatabase.run(InternalAbstractGraphDatabase.java:330)
    at org.neo4j.kernel.EmbeddedGraphDatabase.<init>(EmbeddedGraphDatabase.java:63)
    at org.neo4j.graphdb.factory.GraphDatabaseFactory$1.newDatabase(GraphDatabaseFactory.java:92)
    at org.neo4j.graphdb.factory.GraphDatabaseBuilder.newGraphDatabase(GraphDatabaseBuilder.java:198)
    at org.neo4j.graphdb.factory.GraphDatabaseFactory.newEmbeddedDatabase(GraphDatabaseFactory.java:69)
    at no.marcello.cmdb.Import.<init>(Import.java:34)
    at no.marcello.cmdb.Main.main(Main.java:10)
Caused by: org.neo4j.kernel.lifecycle.LifecycleException: Component 'org.neo4j.kernel.StoreLockerLifecycleAdapter@5d20e46' was successfully initialized, but failed to start. Please see attached cause exception.
    at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:509)
    at org.neo4j.kernel.lifecycle.LifeSupport.start(LifeSupport.java:115)
    at org.neo4j.kernel.InternalAbstractGraphDatabase.run(InternalAbstractGraphDatabase.java:307)
    ... 6 more
Caused by: org.neo4j.kernel.StoreLockException: Unable to obtain lock on store lock file: /tmp/import.db/store_lock. Please ensure no other process is using this database, and that the directory is writable (required even for read-only access)
    at org.neo4j.kernel.StoreLocker.checkLock(StoreLocker.java:82)
    at org.neo4j.kernel.StoreLockerLifecycleAdapter.start(StoreLockerLifecycleAdapter.java:44)
    at org.neo4j.kernel.lifecycle.LifeSupport$LifecycleInstance.start(LifeSupport.java:503)
    ... 8 more
Caused by: java.io.IOException: Unable to lock sun.nio.ch.FileChannelImpl@70b0b186
    at org.neo4j.kernel.impl.nioneo.store.FileLock.wrapFileChannelLock(FileLock.java:38)
    at org.neo4j.kernel.impl.nioneo.store.FileLock.getOsSpecificFileLock(FileLock.java:93)
    at org.neo4j.kernel.DefaultFileSystemAbstraction.tryLock(DefaultFileSystemAbstraction.java:89)
    at org.neo4j.kernel.StoreLocker.checkLock(StoreLocker.java:74)
    ... 10 more

現在我必須在我的應用程序的每次運行之間neo4j start neo4j stopneo4j start以查看更改。 我的手厭倦了。

使用Neo4j瀏覽器時,我可以禁用數據庫鎖定嗎? 我希望這樣做是為了測試目的,因為它有助於在我填充它時看到我的數據庫模型如何演變。

無論如何,數據庫系統 - 小型系統 - 通常可以以兩種模式運行:嵌入式或服務器式。 在嵌入式模式中,想法是一個程序和一個程序一次只能讀寫數據庫。 這對許多應用程序非常有用,並且允許數據庫省去允許多個程序之間訪問所需的代碼,這會占用時間,代碼和處理能力。

在服務器模式下,數據庫管理系統本身作為單獨的程序運行,並且它被構建為允許多個程序訪問它。

基於上面錯誤消息中的類,您有一個嵌入式數據庫,因此您的問題的答案是“不,您不能在此模式下執行此操作”。 我希望你可以切換到使用neo4j的服務器模式,但是連接到它會涉及一些代碼更改,然后你會遇到一些小問題,即在程序運行時確保你的數據庫系統正在運行等等。

因此,您可以使用此數據庫數據執行此操作,但您必須更改運行數據庫管理系統的模式。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM