mongodb Failed: error connecting to db server: no reachable servers

Mongodb

Mongodb Problem Overview


I installed mongodb in Ubuntu14.04 server

I was not able to connect to mongodb via "mongoimport", "mongodump", "mongostat", etc. It always show "no reachable server"

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

Somehow, I was able to connect with mongo shell

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

At first, I doubt if it cause by my iptables, so I flush all iptables rules and create rules for ALL accept, but it still same

 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

I search the stackOverflow and google and someone told marked off bind_ip or set bind_ip to 0.0.0.0, I tried all but still failed.

Below are my mangodb config, would any one can help me to check? Thanks for your help

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

Mongodb Solutions


Solution 1 - Mongodb

A temporary workaround is to add the host param to your mongoimport call, letting mongo know that the host is your own machine (127.0.0.1):

mongoimport --host=127.0.0.1

The full command in your case is then:

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

(Source: ranjeetcao @ mongorestore Failed: no reachable servers)


Update:

Updating to Mongo >= 3.0.7 should solve the issue

(Source: Colin Marshall @ mongorestore Failed: no reachable servers)


Update 2:

It seems the Bug is still happening for some users.

There's also an open JIRA issue here.

(Source: James Chien @ this question thread)


Update 3:

In some cases, this can be caused by Mongo running as a ReplicaSet. To solve this, as far as I've seen, one can either disable the ReplicaSet functionality or reset it. See:

(Source: Maxim Yefremov @ mongorestore Failed: no reachable servers)

Solution 2 - Mongodb

You need to provide host option try the following command :

mongoimport --host=127.0.0.1 -d dbName -c collectionName --file output.txt

Solution 3 - Mongodb

To provide the options host and port

mongoimport --host X.X.X.X --port 27017 --db dbName --collection collectionName --file fileName.json --jsonArray

Solution 4 - Mongodb

I find the answer by this links https://jira.mongodb.org/browse/TOOLS-620 It seem it is a mongodb tools bugs that doesn't resolved yet. Not sure if anyone know if the latest tools have fixed the issue?

BTW, I uninstall the mongodb-tools 3.x and reinstall to 2.6.0 that resolved the problem

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

Solution 5 - Mongodb

Adding another answer for those who are struggling with the same issue while using MongoDB Atlas.

I tried to follow the offical guides like Seed with mongorestore and Load File with mongoimport but received the same no reachable servers error.

I tried to change the command arguments over and over - nothing changed.

But then I navigated inside my cluster to the "Command Line Tools" tab and saw the exact command I should run for mongorestore, mongodump, mongoimport,mongoexport etc':

enter image description here

Adding as inline the full command:

mongorestore --host 
<cluster-name>-shard-0/
<cluster-name>-shard-00-00-obe3i.mongodb.net:27017,
<cluster-name>-shard-00-01-obe3i.mongodb.net:27017,
<cluster-name>-shard-00-02-obe3i.mongodb.net:27017 
--ssl 
--username <User-Name> 
--password <PASSWORD> 
--authenticationDatabase admin 

The mongorestore comand can be replaced with mongodump,mongoimport,mongoexport etc'.

(*) Prefer copying the command directly from dashboard because the DNS of the replica-sets might change.

(**) MongoDB shell version v4.2.5.

Solution 6 - Mongodb

If TLS is enabled with authentication then use the below format from the dump location

mongorestore --host=example.com --port=27017 --username=user_name  --authenticationDatabase=admin --ssl --sslCAFile /etc/ssl/rootCA.pem --sslPEMKeyFile /etc/ssl/mongodb.pem

Solution 7 - Mongodb

For mongodb docker compose user the below command to seed the database

CMD mongoimport --uri mongodb://mongodb:27017/testdb --collection users --type json --file /init.json --jsonArray

Solution 8 - Mongodb

For people still facing this issue with MongoDB Atlas, just update your mongoDB version to more than 4.0.0. and it will work.

Solution 9 - Mongodb

For someone using Mongo Atlas and json file for import into collection:

mongoimport --uri mongodb+srv://<user>:<password>@your-cluster.xxxx.mongodb.net/<db> -c <collection> --file import.json --jsonArray

Solution 10 - Mongodb

I went ahead and downloaded MongoDB Compass and used the connection string from Atlas for For NodeJS version 2.2.12 or later

and that connection worked like a charm.

After that I went ahead and added the data using the Add Data option and uploaded the file which i want to mongoimport

Solution 11 - Mongodb

I used mongo atlas to import CSV file to the cluster, I faced the same issue I tried many different solutions mentioned here but no one worked, I get back to the documentation this one worked for me, go to the dashbord and click on the name of your cluster, in the extreme right there is tab called command-line tools Data Import and Export Tools you will find how to import to your cluster

mongoimport --uri mongodb+srv://admin:<PASSWORD>@<NAME>.mongodb.net/<DATABASE> --collection <COLLECTION> --type <FILETYPE> --file <FILENAME>

if you are uploading csv file add --headerline after type

Solution 12 - Mongodb

If you have installed mongodb through homebrew then you can simply start mongodb through

brew services start mongodb

Then access the shell by

mongo

You can shut down your db by

brew services stop mongodb

For more options

brew info mongodb

Solution 13 - Mongodb

mongorestore --db <thedb> --host=127.0.0.1 --port=<port> --drop path/db

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionJames ChienView Question on Stackoverflow
Solution 1 - MongodbwhythecodeView Answer on Stackoverflow
Solution 2 - MongodbShemeer M AliView Answer on Stackoverflow
Solution 3 - MongodbDere SagarView Answer on Stackoverflow
Solution 4 - MongodbJames ChienView Answer on Stackoverflow
Solution 5 - MongodbRtmYView Answer on Stackoverflow
Solution 6 - MongodbAnson Alexander CardozView Answer on Stackoverflow
Solution 7 - MongodbDipjyoti MetiaView Answer on Stackoverflow
Solution 8 - MongodbMartin De SimoneView Answer on Stackoverflow
Solution 9 - MongodbAlex ErshovView Answer on Stackoverflow
Solution 10 - MongodbkaushalopView Answer on Stackoverflow
Solution 11 - Mongodbben fadhel IchrafView Answer on Stackoverflow
Solution 12 - MongodbFomovetView Answer on Stackoverflow
Solution 13 - MongodbJekayodeView Answer on Stackoverflow