45 votes

Comment réparer mon mongodb ?

Je ne parviens pas à me connecter à Mongo DB, que j'ai installé en tant que service Windows sur ma machine locale. J'ai également créé une petite application WPF qui communique avec MongoDB. Le message d'erreur :

Erreur : Impossible de se connecter au serveur 127.0.0.1 shell/mongo.js:8 4 exception : échec de la connexion Unclean shutdown détecté.

1 votes

J'ai fait la même architecture d'application : J'en conclus qu'en raison de ce problème, MongoDb n'est pas adapté à ce type d'application, mais uniquement aux plateformes côté serveur hautement fiables. Sinon, vous serez fréquemment confronté à ce problème. Mieux vaut opter pour une alternative comme LiteDb ou Mini-Biggy.

107voto

Sergio Tulentsev Points 82783

Vous devez le lancer avec --repair drapeau.

mongod --repair

Une fois la réparation terminée, arrêtez celle-ci et lancez-la normalement. Documentation sur l'option --repair .

1 votes

Si la réparation échoue et que mongod répond par une exception sur un fichier de données corrompu, supprimez le fichier mongd.lock ainsi que les fichiers de données mongo corrompus et exécutez à nouveau mongod --repair. Vous perdrez évidemment des données avec cette approche, mais au moins vous serez en mesure de relancer mongod.

23voto

Moin Haidar Points 521

Plus vite :

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

1 votes

Merci ! L'utilisation de l'option --dbpath avec le drapeau --repair a fonctionné pour moi. J'ai eu le même problème avec le "unclean shutdown" (quoi que cela veuille dire), et quand j'ai essayé de réparer, j'ai eu une erreur indiquant que la valeur par défaut " \data\db "n'a pas été trouvé. Ceci était attendu car j'utilise un emplacement séparé pour stocker mes journaux et mes données. J'ai simplement défini le --dbpath à mon emplacement personnalisé et cela a fonctionné. Je n'ai pas confirmé, mais je pense que je pourrais utiliser l'option --config "mongodb". \mongod.cfg "avec l'option --repair pour que MongoDB utilise mes paramètres personnalisés. C'est bizarre qu'il ne lise pas ce fichier avec la réparation.

0 votes

@Shejo284 Sous Windows, la commande sera la suivante mongod.exe --dbpath "C:\path\to\data" --repair . Si vous obtenez l'erreur "unclean shutdown", exécutez mongod à partir de cmd, puis appuyez sur ctrl-C pour arrêter proprement, et ensuite exécutez cette commande.

0 votes

Cela fonctionne, devrait trouver dbpath par grep dbPath /etc/mongod.conf

14voto

Anubis Points 461

Si vous effectuez une opération de réparation en tant qu'utilisateur Root, assurez-vous qu'ensuite tous les fichiers db appartiennent à l'utilisateur mongodb, sinon mongodb ne démarrera pas.

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

4voto

Ivan Trechekas Points 31
$ mongo 
> use dbname
> db.repairDatabase()

Note --La fonctionnalité de réparation est également disponible dans le shell avec l'aide db.repairDatabase() pour la commande repairDatabase.

Voir aussi http://docs.mongodb.org/manual/tutorial/recover-data-following-unexpected-shutdown/ :

0 votes

Les premières lignes sont-elles destinées à être un exemple de script ? Alors faites-les précéder de 4 espaces pour les formater comme du code et non comme une liste.

0 votes

Bonjour, je sais que c'est une très vieille question et réponse. Pour tous ceux qui viennent encore sur ce site et qui n'ont pas réussi à réparer leur collection corrompue à l'aide de la fonction --repair principalement à la propriété et tout, cette magie fonctionne parfaitement.

1voto

Sushil Paudel Points 11

Ecrivez la commande comme ci-dessous et je pense que cela résoudra le problème :

cd data/

rm -rf mongod.lock*

cd ..

mongod --repair

./mongod

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X