web-dev-qa-db-fra.com

mongodb Failed: erreur de connexion au serveur de base de données: aucun serveur accessible

J'ai installé Mongodb sur le serveur Ubuntu14.04

Je ne pouvais pas me connecter à mongodb via "mongoimport", "mongodump", "mongostat", etc. Il indique toujours "pas de serveur accessible"

mongoimport --db test --collection restaurants --drop --file dataset.json
2015-08-25T13:08:29.802+0800    [........................] test.restaurants 0.0 B/11.3 MB (0.0%)
2015-08-25T13:08:30.306+0800    Failed: error connecting to db server: no reachable servers
2015-08-25T13:08:30.306+0800    imported 0 documents

D'une manière ou d'une autre, j'ai pu me connecter avec mongo Shell

mongo --port 27017
MongoDB Shell version: 3.0.6
connecting to: 127.0.0.1:27017/test

Au début, je doute que cela causee par mes iptables, alors je vide toutes les règles d’iptables et je crée des règles pour ALL accept, mais c’est toujours pareil

 Sudo iptables -S
    -P INPUT ACCEPT
    -P FORWARD ACCEPT
    -P OUTPUT ACCEPT
    -A INPUT -j ACCEPT
    -A INPUT -i lo -j ACCEPT
    -A FORWARD -j ACCEPT
    -A OUTPUT -j ACCEPT
    -A OUTPUT -o lo -j ACCEPT

Je recherche le stackOverflow et google et quelqu'un m'a dit marqué Bind_ip ou définir bind_ip à 0.0.0.0, j'ai essayé tout mais toujours échoué.

Ci-dessous, ma configuration de mangodb, est-ce que quelqu'un peut m'aider à vérifier? Merci pour votre aide

james@localhost:~$ cat /etc/mongod.conf 
# mongod.conf

# Where to store the data.

# Note: if you run mongodb as a non-root user (recommended) you may
# need to create and set permissions for this directory manually,
# e.g., if the parent directory isn't mutable by the mongodb user.
dbpath=/var/lib/mongodb

#where to log
logpath=/var/log/mongodb/mongod.log

logappend=true

port = 27017

# Listen to local interface only. Comment out to listen on all interfaces. 
#bind_ip = 127.0.0.1
# Disables write-ahead journaling
# nojournal = true

# Enables periodic logging of CPU utilization and I/O wait
#cpu = true

# Turn on/off security.  Off is currently the default
#noauth = true
#auth = true

# Verbose logging output.
verbose = true

# Inspect all client data for validity on receipt (useful for
# developing drivers)
#objcheck = true

# Enable db quota management
#quota = true

# Set oplogging level where n is
#   0=off (default)
#   1=W
#   2=R
#   3=both
#   7=W+some reads
#diaglog = 0

# Ignore query hints
#nohints = true

# Enable the HTTP interface (Defaults to port 28017).
#httpinterface = true

# Turns off server-side scripting.  This will result in greatly limited
# functionality
#noscripting = true

# Turns off table scans.  Any query that would do a table scan fails.
#notablescan = true

# Disable data file preallocation.
#noprealloc = true

# Specify .ns file size for new databases.
# nssize = <size>

# Replication Options

# in replicated mongo databases, specify the replica set name here
#replSet=setname
# maximum size in megabytes for replication operation log
#oplogSize=1024
# path to a key file storing authentication info for connections
# between replica set members
#keyFile=/path/to/keyfile
49
James Chien

Une solution temporaire consiste à ajouter le paramètre Host à votre appel mongoimport, en indiquant à mongo que l'hôte est votre propre machine (127.0.0.1):

mongoimport --Host=127.0.0.1

La commande complète dans votre cas est alors:

mongoimport --Host=127.0.0.1 \
  --db test --collection restaurants --drop --file dataset.json

(Source: ranjeetcao @ mongorestore Echec: aucun serveur accessible )


Mettre à jour:

Mettre à jour vers Mongo> = 3.0.7 devrait résoudre le problème

(Source: Colin Marshall @ mongorestore Échec: aucun serveur accessible )


Mise à jour 2:

Il semble que le bogue existe toujours pour certains utilisateurs .

Il y a aussi un numéro ouvert de JIRA ici .

(Source: James Chien @ ce sujet de discussion )


Mise à jour 3:

Dans certains cas, cela peut être dû au fait que Mongo est exécuté en tant que ReplicaSet. Pour résoudre ce problème, autant que je sache, on peut soit désactiver la fonctionnalité ReplicaSet, soit la réinitialiser. Voir:

(Source: Maxim Yefremov @ mongorestore Échec: aucun serveur accessible )

82
whythecode

Commande complète:

mongoimport --Host=127.0.0.1 -d testdb -c testc --file test.txt
1
Shemeer M Ali

Je trouve la réponse par ce lien https://jira.mongodb.org/browse/TOOLS-620 Il semble que ce soit un bogue de mongodb tools qui n’a pas encore été résolu . Je ne sais pas si Quelqu'un sait si les derniers outils ont résolu le problème?

En passant, je désinstalle mongodb-tools 3.x et réinstalle à la version 2.6.0 qui a résolu le problème

Sudo apt-get purge mongodb-org-tools
echo 'deb http://downloads-distro.mongodb.org/repo/ubuntu-upstart dist 10gen' | Sudo tee /etc/apt/sources.list.d/mongodb.list
Sudo apt-get update
Sudo apt-get install -y mongodb-org-tools=2.6.0

mongoimport --db test --collection restaurants --drop --file dataset.json
connected to: 127.0.0.1
2015-08-25T15:19:59.494+0800 dropping: test.restaurants
2015-08-25T15:20:00.089+0800 check 9 25359
2015-08-25T15:20:00.089+0800 imported 25359 objects
1
James Chien

Fournir les options Host et port  

mongoimport --Host X.X.X.X --port 27017 --db dbName --collection collectionName --file fileName.json --jsonArray
0
Dere Sagar

Si vous avez installé mongodb via homebrew, vous pouvez simplement lancer mongodb via

brew services start mongodb

Accédez ensuite au shell par

mongo

Vous pouvez fermer votre base de données en

brew services stop mongodb

Pour plus d'options

brew info mongodb
0
Fomove