如何修复我的mongodb?

时间:2012-03-31 05:33:33

标签: mongodb

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

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

7 个答案:

答案 0 :(得分:98)

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

mongod --repair

修复完成后,停止此操作并正常启动。 Documentation on --repair option

答案 1 :(得分:15)

更快:

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

答案 2 :(得分:10)

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

chown -R mongodb:mongodb /data/db
rm /data/db/mongod.lock
/etc/init.d/mongodb start

答案 3 :(得分:3)

$ mongo 
> use dbname
> db.repairDatabase()

注意 - shell中还提供了修复功能,其中包含用于repairDatabase命令的db.repairDatabase()帮助程序。

另见http://docs.mongodb.org/manual/tutorial/recover-data-following-unexpected-shutdown/

答案 4 :(得分:1)

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

auto main() -> int
{
    using Argh = int[0];
}

答案 5 :(得分:1)

如果您在 Ubuntu 上使用 official MongoDB repo 而不是默认软件包,则接受的答案将不起作用

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

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

这就是我最终为了让它工作而做的:

mongodb

答案 6 :(得分:0)

按照此步骤将您的mondoDB重新启动为新鲜

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

  

为此必须强行杀死端口27017(mongodb的默认端口)上运行的每个进程

     

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

     

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

     

kill -9 "PID"用运行后得到的数字替换PID   第一条命令

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