我在 openSUSE Tumbleweed 上使用 MongoDB 3.6.2。今天当我尝试打开 mongo shell 时出现连接错误。当我使用检查 mongodb.service 的状态时
sudo systemctl status mongodb
这显示了
Active: failed
没有太多有用的信息。然后我检查了
sudo mongod --repair
我发现以下错误:
STORAGE [initandlisten] exception in initAndListen: NonExistentPath: Data directory /data/db not found., terminating
所以我去检查我的 /etc/mongodb.conf 文件,存储部分如下所示:
# Where and how to store data.
storage:
dbPath: /var/lib/mongodb
journal:
enabled: true
# engine: mmapv1
# mmapv1:
# wiredTiger: true
网络部分如下所示:
net:
port: 27017
bindIp: 127.0.0.1,::1
ipv6: true
该文件的其他部分不太可能导致此错误,因此我省略了它们。
我认为我的机器上没有打开 ipv6 但这也不应该导致错误,因为我试图设置
ipv6: false
它仍然没有工作。
问题是,我通常将 mongodb 作为服务并使其在启动时自动启动
sudo systemctl start mongodb
sudo systemctl enable mongodb
直到今天,这一切都很好。但是,当我手动运行
sudo mongod --dbpath /var/lib/mongodb --port 27017
它工作正常。所以似乎 mongodb 仍然无法识别新的 dbpath /var/lib/mongodb。我确实跑了
sudo mongod --config /etc/mongodb.conf
但看起来这并没有帮助。
请指教。我每次都必须手动指定 --dbpath 吗?我可以继续使用 .conf 文件将 mongodb 作为服务运行吗?
提前致谢。