【问题标题】:Store and its lock file has been locked by another process: /var/lib/neo4j/data/databases/graph.db/store_lock存储及其锁定文件已被另一个进程锁定:/var/lib/neo4j/data/databases/graph.db/store_lock
【发布时间】:2021-01-13 00:35:51
【问题描述】:

我做了什么

neo4j console

(工作正常)

ctrl-C

重新启动后,我有上面的消息。

我删除/var/lib/neo4j/data/databases/graph.db/store_lock

那我有

Externally locked: /var/lib/neo4j/data/databases/graph.db/neostore

有什么方法可以清理锁吗? (没有重新安装)

【问题讨论】:

    标签: neo4j


    【解决方案1】:

    杀死 Java 进程并删除 store_lock 对我有用:

    找到了挥之不去的进程,

    ps aux | grep "org.neo4j.server"
    

    杀了它,

    kill -9 <pid-of-neo4js-java-process>
    

    并删除

    sudo rm /var/lib/neo4j/data/databases/graph.db/store_lock
    

    Allegedly,只是杀死挥之不去的进程可能会奏效,但我还是继续删除了锁。

    【讨论】:

    • 我杀死了java进程并且容器停止了。有什么帮助吗?
    【解决方案2】:

    你可以杀死java进程并删除store_lock文件。它似乎不会损害数据库的完整性。

    【讨论】:

    • 您应该检查一下为什么 store_lock 文件在一段时间后没有自行清除 - 这是否一致?
    • 我确实终止了该进程,但它立即重新启动。我该怎么办?
    【解决方案3】:

    我发现这个问题在尝试使用 neo4j-admin 工具导入 CSV 时出现相同的错误消息。

    就我而言,问题是我首先启动了 neo4j 服务器:

    docker run -d --name testneo4j -p7474:7474 -p7687:7687 -v /path/to/neo4j/data:/data -v /path/to/neo4j/logs:/logs -v /path/to/neo4j/import:/var/lib/neo4j/import -v /path/to/neo4j/plugins:/plugins --env NEO4J_AUTH=neo4j/test neo4j:latest
    

    然后尝试启动导入(CSV 数据文件见here):

    docker exec -it testneo4j neo4j-admin import --nodes=Movies=import/movies.csv --nodes=Actors=import/actors.csv --relationships=ACTED_IN=import/roles.csv
    

    这会导致锁错误,因为服务器获取数据库锁,neo4j-admin 是独立工具,也需要获取数据库锁。杀戮、锁定文件删除和 sudo 对我不起作用。

    有什么帮助:

    1. docker run --rm ... neo4j:latest neo4j-admin ... - 这将一次性导入到空数据库中。没有死容器,只有外部卷中的导入数据。 (注意,如果 db 不为空,则命令失败。)关键是,Docker 入口点启动服务器,除非 Dockerfile 中的 CMD 为 overriden
    2. docker run -d ... neo4j:latest - 这运行 neo4j 服务器

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-11
      • 1970-01-01
      • 2023-04-05
      • 2011-01-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多