web-dev-qa-db-fra.com

installer mongoDB (le processus enfant a échoué, arrêté avec le numéro d'erreur 100)

J'ai essayé d'installer mongoDB sur mon MacBook Air.

J'ai téléchargé le fichier compressé à partir du site web officiel et extrait ce fichier et je passe dans le répertoire racine . Après cela, dans ce répertoire, j'ai créé le dossier/data/db et/log.

Voici mon mongodb.config qui décrit la configuration de base pour ma base de données.

dbpath = /mongodb/data/db
logpath = /mongodb/log/mongo.log
logappend = true
#bind ip = 127.0.0.1
port = 27017

fork = true
rest = true
verbose = true
#auth = true
#noauth = true

De plus, je veux savoir ce que le # signifie dans le fichier de configuration.

Je mets ce fichier à /mongodb/bin, /mongodb est le répertoire dans lequel j'ai extrait les fichiers.

J'ai ouvert le terminal et entré ./mongod --config mongodb.config et je l'ai récupéré.

Juneyoung-ui-MacBook-Air:bin juneyoungoh$ ./mongod --config mongodb.config
about to fork child process, waiting until server is ready for connections.
forked process: 1775
all output going to: /mongodb/log/mongo.log
ERROR: child process failed, exited with error number 100

Comment puis-je gérer cette erreur et ce que cela signifie? 

19
Juneyoung Oh

Les dossiers de données que vous avez créés ont très probablement été créés avec Sudo, oui? Ils appartiennent à root et ne sont pas accessibles en écriture à votre utilisateur normal. Si vous êtes le seul utilisateur de votre macbook, changez alors la propriété des répertoires:

Sudo chown juneyoungoh /data
Sudo chown juneyoungoh /data/db
Sudo chown juneyoungoh /data/log

Si vous envisagez de l'installer sur une machine publique ou dans un lieu légitime, renseignez-vous davantage sur les pratiques de sécurité des mongos ailleurs. Je vais juste te faire courir sur ton macbook.

24
Joe Frambach

J'ai eu un problème similaire et il n'était pas lié à un problème 'Sudo'. J'essayais de me remettre d'une panique au noyau!

Quand je regarde mon dossier de données, j'ai découvert qu'un fichier mongod.lock était là. Dans mon cas, cette page a beaucoup aidé: http://docs.mongodb.org/manual/tutorial/recover-data-following-unexpected-shutdown/ . Comme ils l'expliquent, 

si le fichier mongod.lock n'est pas un fichier de zéro octet, alors mongod refusera de démarrer.

J'ai testé cette solution dans mon environnement et cela fonctionne parfaitement:

  1. Supprimer le fichier mongod.lock.
  2. Réparez la base de données: mongod --dbpath /your/db/path --repair
  3. Run mongod: mongod --dbpath /your/db/path
12
goldenboy

Il y avait le même problème sur ma machine. Dans le fichier journal était:

Lun 29 juillet 09: 57: 13.689 [initandlisten] ERREUR: espace libre insuffisant pour le fichier journal 
Lundi 29 juillet 09h57: 13,689 [initandlisten] Veuillez mettre au moins 3379MB à disposition dans/var/mongoexp/rs2/journal ou utilisez --smallfiles 

Il a été résolu en utilisant mongod --smallfiles. Ou si vous démarrez Mongod avec l'option --config , dans un fichier de configuration, désactivez la journalisation à écriture anticipée de nojournal=true (supprimez le numéro de début). Un peu plus d'espace disque résoudrait également le problème ci-dessus.

9
burseaner

Problème similaire avec la même erreur - J'essayais d'exécuter le script de réparation Sudo -u mongodb mongod -f /etc/mongodb.conf --repair

Vérifié ps aux | grep mongo et voir que le démon était en cours d'exécution. Arrêtez-le et le script de réparation s'exécute sans problème.

J'espère que cela pourrait être utile à quelqu'un d'autre.

3
kode

C'est parce que vous n'avez probablement pas arrêté mongodb correctement et que vous ne démarrez pas mongodb correctement. Selon votre mongodb.config, vous avez dbpath = /mongodb/data/db - donc je suppose que vous avez créé le référentiel /mongodb/data/db? Permettez-moi de clarifier toutes les étapes. 

  1. POUR COMMENCER MONGODB

Dans votre mongodb.config, changez le dbpath = /mongodb/data/db en dbpath = /data/db. Sur votre terminal, créez le référentiel de base de données en tapant: mkdir /data/db. Vous avez maintenant un référentiel - vous pouvez démarrer votre mongo.

Pour démarrer mongo en arrière-plan, tapez: mongod --dbpath /data/db --fork --logpath /dev/null.

  • /data/db est l'emplacement de la base de données. 
  • --fork signifie que vous voulez démarrer mongo en arrière-plan - désamon.
  • --logpath /dev/null signifie que vous ne voulez pas vous connecter - vous pouvez changer cela en remplaçant /dev/null par un chemin tel que /var/log/mongo.log

    1. FERMER MONGODB

Connectez-vous à votre mongo en tapant: mongo puis use admin et db.shutdownServer(). Comme expliquer dans mongoDB

Si cette technique ne fonctionne pas pour une raison quelconque, vous pouvez toujours arrêter le processus.

Recherchez le PID du processus mongodb en tapant: lsof -i:27017 en supposant que votre mongodb s'exécute sur le port 27017

Tapez kill <PID>, remplacez <PID> par la valeur que vous avez trouvée la commande précédente.

1
julien bouteloup

J'ai eu la même erreur sur linux (Centos) et cela a fonctionné pour moi

  1. Supprimer mongod.lock de la dbpath

    $ rm /var/lib/mongo/mongod.lock

  2. Réparer le processus mongod

    $ mongod --repair

  3. Exécuter la configuration Mongod

    $ mongod --config /etc/mongod.conf

1
Nikhil Mohadikar

Généralement, cette erreur survient lorsque le fichier mongod.conf ne parvient pas à trouver un certain chemin pour. permission du fichier pour accéder aux répertoires de configuration et aux fichiers déclarés dans mongod.conf

pour résoudre cette erreur, nous devons observer le journal généré par MongoDBit indiquera clairement si le fichier ou le répertoire auquel vous ne pouvez pas accéder à MongoDB

l'erreur ci-dessus peut ressembler à l'image ci-dessous screenshot  enter image description here

 enter image description here

0
Narendra Maru

J'ai eu la même erreur. Je l'ai exécuté de manière interactive pour voir le journal.

2014-10-21T10:12:35.418-0400 [initandlisten] ERROR: listen(): bind() failed errno:48 Address already in use for socket: 0.0.0.0:27017

Ensuite, j'ai utilisé lsof pour savoir quel processus utilisait mon port.

$ lsof -i:27017
COMMAND  PID     USER   FD   TYPE             DEVICE SIZE/OFF NODE NAME
mongod  2106 MYUSERID   10u  IPv4 0x635b71ec3b65b4a1      0t0  TCP *:27017 (LISTEN)

C’était un mongod que j’avais précédemment branché et que j’avais oublié de désactiver (car je ne l’avais pas vu tourner dans ma fenêtre bash) . Le tuer simplement en exécutant kill 2106, permettait à mon processus de s’exécuter sans le erreur 100.

0
AnneTheAgile