当我执行
sudo arangod或sudo service arangodb start在我的主目录中
我收到以下消息
[2844] FATAL cannot start server: database directory is locked
[2867] FATAL cannot start server: database directory is locked
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个错误?
通常,ArangoDB 在启动时在数据库目录中创建一个锁文件,以确保没有两个arangod进程同时在同一个数据库目录(很可能位于/var/lib/arangodb/)上工作。
看到上面的错误可能有不同的原因:
另一个使用相同数据库目录的 ArangoDB 实例可能仍在运行。在这种情况下,错误消息和拒绝启动是正确的。您可以尝试arangod通过发出类似ps fax | grep arangod.
如果没有运行 ArangoDB,如果LOCKArangoDB 的数据库目录中存在一个无法被arangod启动的进程读取或写入的文件,则可能仍会出现错误。在这种情况下,启动也会被拒绝。这可能是一个权限问题,但如果您通过sudo.
最后一种可能性是flock()文件调用LOCK因任何原因失败。在这种情况下,操作系统不能保证该文件是专门为arangod刚启动的进程锁定的。这不会阻止其他arangod进程尝试并行使用相同的数据库目录,这将是不安全的。所以在这种情况下,服务器也会拒绝启动。顺便说一句,flock可能无法在所有文件系统上实现,因为在分布式文件系统中可能难以实现。但是,它应该适用于本地文件系统。
如果您 100% 确定没有其他arangod实例正在运行,该LOCK文件没有文件权限问题并且错误仍然存在,您可以尝试LOCK手动从数据库目录中删除该文件并启动服务器。