如何修复我的mongodb?

如何修复我的mongodb?,mongodb,Mongodb,我似乎无法连接到Mongo DB,我在本地机器上安装了它作为Windows服务。我还构建了一个与MongoDB通信的小WPF应用程序。 错误消息: 错误:无法连接到服务器127.0.0.1 shell/mongo.js:8 4. 异常:连接失败 检测到不干净的关机。您应该使用--repair标志启动它 mongod --repair 修复完成后,停止此项并正常启动 更快: sudo rm /data/db/mongod.lock sudo mongod --dbpath /data/db --

我似乎无法连接到Mongo DB,我在本地机器上安装了它作为Windows服务。我还构建了一个与MongoDB通信的小WPF应用程序。 错误消息:

错误:无法连接到服务器127.0.0.1 shell/mongo.js:8 4. 异常:连接失败
检测到不干净的关机。

您应该使用
--repair
标志启动它

mongod --repair
修复完成后,停止此项并正常启动

更快:

sudo rm /data/db/mongod.lock
sudo mongod --dbpath /data/db --repair
sudo mongod --dbpath /data/db

如果您以root用户身份执行修复操作,请确保之后所有db文件都归mongodb用户所有,否则mongodb将不会启动

chown -R mongodb:mongodb /data/db
rm /data/db/mongod.lock
/etc/init.d/mongodb start
注意--在shell中,repairDatabase命令的db.repairDatabase()帮助程序也提供了修复功能


另请参见:

按如下所示编写命令,我认为它将解决问题:

cd data/

rm -rf mongod.lock*

cd ..

mongod --repair

./mongod

按照此步骤重新启动mondoDB

1、杀死mongod正在运行的所有进程

为此,强制终止在端口27017(mongodb的默认端口)上运行的每个进程

lsof-n-i4TCP:27017
其中27017是进程所在的端口号 奔向

这将返回进程id(PID)并运行

kill-9“PID”
将PID替换为运行 第一命令

2、使用
mongod
命令重新启动mongo

如果您使用的是Ubuntu上的而不是默认的软件包,那么接受的答案将不起作用

默认情况下,
mongod
命令使用
/data/db
作为路径,而
/etc/mongodb.conf
使用
/var/lib/mongodb
作为路径。因此,如果您只执行
mongod--repair
,它将尝试修复位于
/data/db
的数据库,这是错误的路径

我还发现,如果您以
root
用户身份执行
mongod
,则创建的任何文件都将归
root
所有,因此您需要使用
mongodb
用户执行修复

这就是我最终让它工作的原因:

sudo chown-R mongodb:/var/lib/mongodb#只是为了确保权限正确
sudo-u mongodb mongod--dbpath/var/lib/mongodb--repair
sudo服务mongodb启动

第一行是脚本示例吗?然后在它们前面加上4个空格,将其格式化为代码而不是列表。嗨,我知道这是一个非常古老的问题和答案。顺便说一句,对于那些仍然来到这里的人来说,你无法用
--repair
修复你的腐败收藏,主要是所有权和所有东西,这个魔法非常有效。谢谢!使用带有--repair标志的--dbpath选项对我很有效。我对“不干净的关机”也有同样的问题(不管这意味着什么),当我试图修复时,我得到了一个错误,说明找不到默认的“\data\db”目录。这是意料之中的,因为我正在使用一个单独的位置来存储日志和数据。我只是将--dbpath设置为我的自定义位置&工作了。我还没有确认,但我想我可以使用--config“mongodb\mongod.cfg”和--repair标志来使用我的自定义设置。奇怪的是,它没有在修复时读取该文件。@Shejo284对于Windows,命令将是
mongod.exe--dbpath“C:\path\to\data”--repair
。如果你得到了“不干净的关机”错误,那么从cmd运行mongod,然后按ctrl-C以干净地关机,然后运行该命令。它可以工作,应该通过
grep dbpath/etc/mongod.conf
找到dbpath,在使用sudo的情况下小心锁文件的所有者。我爱你。经过3个小时的努力,您救了我。如果修复失败,并且mongod对损坏的数据文件响应异常,请删除mongd.lock文件以及损坏的mongo数据文件,然后再次运行mongod--repair。使用这种方法显然会丢失数据,但至少可以重新启动mongod。我使用了相同的应用程序体系结构:WPF应用程序和MongoDb作为“本地数据库”,我得出结论,由于这个问题,MongoDb不适合这种应用程序,而只适用于高度可靠的服务器端平台。否则,您将经常遇到此问题。最好选择LiteDb或Mini-Biggy之类的替代方案。
cd data/

rm -rf mongod.lock*

cd ..

mongod --repair

./mongod