web-dev-qa-db-fra.com

Connexion MongoDb refusée

Ceci est ma première tentative de consommer MongoDB. J'ai Mongo en cours d'exécution:

ps -ef | grep [m]ongo
mongodb  11023  1  0 Jun24 ? 00:00:03 /usr/lib/mongodb/mongod --config /etc/mongodb.conf

Et l'erreur vient du fait de faire

Datastore.save( stuff );  // (pseudo code)

L'erreur:

Jun 27, 2011 3:20:29 PM com.mongodb.DBTCPConnector fetchMaxBsonObjectSize
WARNING: Exception determining maxBSON size using0
Java.io.IOException: couldn't connect to [russ-Elite-book/127.0.1.1:27017] bc:Java.net.ConnectException: Connection refused
    at com.mongodb.DBPort._open(DBPort.Java:206)
    at com.mongodb.DBPort.go(DBPort.Java:94)
    at com.mongodb.DBPort.go(DBPort.Java:75)
    at com.mongodb.DBPort.findOne(DBPort.Java:129)
    at com.mongodb.DBPort.runCommand(DBPort.Java:138)
    ...

Notez que j'utilise 127.0.0.1:27017 pour ma connexion, qui fonctionne avec le shell Mongo. De plus, je reçois la page d'administration dans le navigateur en utilisanthttp://localhost:28017.

Merci beaucoup pour toutes les idées!

19
Russ Bateman

(Je pense que c'est un peu mauvais de répondre à sa propre question, mais en fait, la réponse s'avère être l'une de celles suggérées. Néanmoins, mes remerciements les plus fous à tous. Quand on répond à une question, il faut pouvoir assumer il est basé sur un logiciel correctement installé et fonctionnel. Je ne l’avais pas.)

J'ai installé MongoDB à l'aide du logiciel Ubuntu Software Center. Cela fonctionnait à partir de Shell et du navigateur, comme indiqué ailleurs dans cette question. Cependant, cela ne fonctionnait pas avec Java (ni avec Django non plus).

Le problème, malgré ce qu’il était dit dans la trace de la pile Java, était tout simplement "connexion refusée".

La solution consiste à l'installer à partir des sources Mongo appropriées et à ne pas faire confiance au référentiel Ubuntu.

(Oui, cela arrive aussi fréquemment à d'autres produits obtenus à partir de là, comme Eclipse, mais vous savez que c'est un service tellement agréable que vous voulez lui faire confiance.)

Si vous voulez savoir comment j'ai installé ce qui a ensuite fonctionné, consultez http://www.javahotchocolate.com/tutorials/mongodb.html .

9
Russ Bateman

J'ai rencontré le même problème parce que j'ai amélioré mon mongo en utilisant de la bière. Pour résoudre ce problème. Recherchez le fichier conf (qui peut ne pas être situé dans le répertoire bin où vous démarrez votre mongodb)

/usr/local/Cellar/mongodb-2.2.w Whatever/mongod.conf et commentez la propriété "bind_ip".

13
nids

Il est fort probable que le pilote Java ne puisse pas se connecter à l'adresse spécifiée . Assurez-vous de pouvoir vous connecter à cette adresse 127.0.1.1:27017 à l'aide du shell et exécutez "db.isMaster()" . Il s'agit peut-être d'un problème de 127.0.1.1 contre 127.0.0.1.

7
agirbal

J'ai eu le même problème, mais ma solution était différente. J'utilisais "localhost" comme nom d'hôte et je le changeai en "127.0.0.1" pour le corriger.

6
Daniel Flower

J'ai rencontré le même problème parce que j'ai installé mon mongo avec apt-get. Voici comment y remédier:

  1. Trouvez votre fichier mongod.conf. Dans Ubuntu 14.04, c'est /etc/mongod.conf
  2. Ouvrez le fichier mongod.conf et commandez la ligne bindIp = 127.0.0.1
  3. Redémarrer Mongod
4
Jingwen

Il s’avère que c’est un problème lié au pilote Java MongDB }.

Il y a deux solutions:

  1. Utilisation de version 2.8 ou supérieur du pilote Java.
  2. Editez les fichiers de configuration et, s’il contient la ligne bind_ip = 127.0.0.1 ou bind_ip = localhost, mettez-le en commentaire.

Manger une tarte humble ...

Comme je l'ai montré dans mon commentaire à { la réponse de Russ Bateman } _, cela semblait être un problème avec le paquet Ubuntu. La vraie raison est que le fichier de configuration qui l'accompagne définit une valeur pour bind_ip...

3
Rodrigue

Il est difficile de dire sans voir le contenu de votre fichier .conf. Une chose que je recommanderais consiste à exécuter le shell mongo et à voir si vous pouvez vous connecter, interroger et écrire à partir de celui-ci. Cela aidera à isoler le serveur par rapport à un problème de client Java. En outre, cela peut vous donner une forme différente de l'erreur qui peut être un indice.

Configurez-vous --port dans votre fichier .conf?

2
dm.

Il semble qu'il s'agisse d'un problème de sécurité ou d'une URL non valide. Si vous avez utilisé la configuration par défaut, vous devriez pouvoir accéder à http: // yourmachine: 28017 . Voyez si vous pouvez accéder à la page d'administration à partir de cette URL. Si vous pouvez accéder à l'URL de l'administrateur, remplacez simplement le numéro de port par 27017 dans votre application. Ça devrait marcher.

2
zbugs

Pour moi, c'était une solution complètement différente. J'utilise Spring MVC Framework et tout ce que je devais faire, c'était de confirmer que les fichiers XML de configuration disaient la même chose dans le dossier/target ainsi que dans les dossiers non cibles. Une fois que cela a été ajusté, tout a fonctionné. Le problème était que tout fonctionnait lorsqu'il était exécuté à partir d'un STS, mais lors de son déploiement, j'avais l'erreur mentionnée.

0
Damir Olejar