Impossibile connettersi al server 127.0.0.1:27017


160

Ricevo il seguente errore:

alex@alex-K43U:/$ mongo
MongoDB shell version: 2.2.0
connecting to: test
Thu Oct 11 11:46:53 Error: couldn't connect to server 127.0.0.1:27017 src/mongo/shell/mongo.js:91
exception: connect failed
alex@alex-K43U:/$ 

Questo è ciò che accade quando provo ad avviare mongodb:

* Starting database mongodb                                             [fail]

Ci ho già provato mongo --repair

Ho creato chown e chmod in var, lib, data / db e log mongodb.

Non sono sicuro su che altro fare. Eventuali suggerimenti?

mongodb.log:

***** SERVER RESTARTED *****


Thu Oct 11 08:29:40 
Thu Oct 11 08:29:40 warning: 32-bit servers don't have journaling enabled by default. Please use --journal if you want durability.
Thu Oct 11 08:29:40 
Thu Oct 11 08:29:41 [initandlisten] MongoDB starting : pid=1052 port=27017 dbpath=/var/lib/mongodb 32-bit host=alex-K43U
Thu Oct 11 08:29:41 [initandlisten] 
Thu Oct 11 08:29:41 [initandlisten] ** NOTE: when using MongoDB 32 bit, you are limited to about 2 gigabytes of data
Thu Oct 11 08:29:41 [initandlisten] **       see http://blog.mongodb.org/post/137788967/32-bit-limitations
Thu Oct 11 08:29:41 [initandlisten] **       with --journal, the limit is lower
Thu Oct 11 08:29:41 [initandlisten] 
Thu Oct 11 08:29:41 [initandlisten] db version v2.2.0, pdfile version 4.5
Thu Oct 11 08:29:41 [initandlisten] git version: f5e83eae9cfbec7fb7a071321928f00d1b0c5207
Thu Oct 11 08:29:41 [initandlisten] build info: Linux domU-12-31-39-01-70-B4 2.6.21.7-2.fc8xen #1 SMP Fri Feb 15 12:39:36 EST 2008 i686 BOOST_LIB_VERSION=1_49
Thu Oct 11 08:29:41 [initandlisten] options: { config: "/etc/mongodb.conf", dbpath: "/var/lib/mongodb", logappend: "true", logpath: "/var/log/mongodb/mongodb.log" }
Thu Oct 11 08:29:41 [initandlisten] Unable to check for journal files due to: boost::filesystem::basic_directory_iterator constructor: No such file or directory: "/var/lib/mongodb/journal"
************** 
Unclean shutdown detected.
Please visit http://dochub.mongodb.org/core/repair for recovery instructions.
*************
Thu Oct 11 08:29:41 [initandlisten] exception in initAndListen: 12596 old lock file, terminating
Thu Oct 11 08:29:41 dbexit: 
Thu Oct 11 08:29:41 [initandlisten] shutdown: going to close listening sockets...
Thu Oct 11 08:29:41 [initandlisten] shutdown: going to flush diaglog...
Thu Oct 11 08:29:41 [initandlisten] shutdown: going to close sockets...
Thu Oct 11 08:29:41 [initandlisten] shutdown: waiting for fs preallocator...
Thu Oct 11 08:29:41 [initandlisten] shutdown: closing all files...
Thu Oct 11 08:29:41 [initandlisten] closeAllFiles() finished
Thu Oct 11 08:29:41 dbexit: really exiting now

MODIFICARE:

Ho rimosso il blocco, quindi ho fatto la riparazione mongod e ho ottenuto questo errore:

Thu Oct 11 12:05:37 [initandlisten] exception in initAndListen: 10309 Unable to create/open lock file: /data/db/mongod.lock errno:13 Permission denied Is a mongod instance already running?, terminating

quindi l'ho fatto con sudo:

alex@alex-K43U:~$ sudo mongod --repair
Thu Oct 11 12:05:42 
Thu Oct 11 12:05:42 warning: 32-bit servers don't have journaling enabled by default. Please use --journal if you want durability.
Thu Oct 11 12:05:42 
Thu Oct 11 12:05:42 [initandlisten] MongoDB starting : pid=5129 port=27017 dbpath=/data/db/ 32-bit host=alex-K43U
Thu Oct 11 12:05:42 [initandlisten] 
Thu Oct 11 12:05:42 [initandlisten] ** NOTE: when using MongoDB 32 bit, you are limited to about 2 gigabytes of data
Thu Oct 11 12:05:42 [initandlisten] **       see http://blog.mongodb.org/post/137788967/32-bit-limitations
Thu Oct 11 12:05:42 [initandlisten] **       with --journal, the limit is lower
Thu Oct 11 12:05:42 [initandlisten] 
Thu Oct 11 12:05:42 [initandlisten] db version v2.2.0, pdfile version 4.5
Thu Oct 11 12:05:42 [initandlisten] git version: f5e83eae9cfbec7fb7a071321928f00d1b0c5207
Thu Oct 11 12:05:42 [initandlisten] build info: Linux domU-12-31-39-01-70-B4 2.6.21.7-2.fc8xen #1 SMP Fri Feb 15 12:39:36 EST 2008 i686 BOOST_LIB_VERSION=1_49
Thu Oct 11 12:05:42 [initandlisten] options: { repair: true }
Thu Oct 11 12:05:42 [initandlisten] Unable to check for journal files due to: boost::filesystem::basic_directory_iterator constructor: No such file or directory: "/data/db/journal"
Thu Oct 11 12:05:42 [initandlisten] finished checking dbs
Thu Oct 11 12:05:42 dbexit: 
Thu Oct 11 12:05:42 [initandlisten] shutdown: going to close listening sockets...
Thu Oct 11 12:05:42 [initandlisten] shutdown: going to flush diaglog...
Thu Oct 11 12:05:42 [initandlisten] shutdown: going to close sockets...
Thu Oct 11 12:05:42 [initandlisten] shutdown: waiting for fs preallocator...
Thu Oct 11 12:05:42 [initandlisten] shutdown: closing all files...
Thu Oct 11 12:05:42 [initandlisten] closeAllFiles() finished
Thu Oct 11 12:05:42 [initandlisten] shutdown: removing fs lock...
Thu Oct 11 12:05:42 dbexit: really exiting now

Ma ho ancora lo stesso problema.


1
penso che questo link ti aiuterà a stackoverflow.com/questions/9647561/… cambiando il percorso db di mongo
Med7at

8
sudo service mongod restartha funzionato per me
Sudip Bhandari il

Risposte:


32

Il registro indica che mongodb sta terminando perché esiste un vecchio file di blocco.

Se non lo sei e non stavi eseguendo il journaling, rimuovi il file di blocco, esegui riparazione e riavvia mongodb.

Se si è o si è in esecuzione con l'inserimento nel journal inserito, consultare i relativi documenti Mongo DB . Si noti che dicono "Se si esegue il journaling non è necessario eseguire una riparazione per ripristinare uno stato coerente". Quindi, se stavi inserendo il journal, la riparazione potrebbe aver peggiorato le cose.


25
È un peccato che una riparazione possa danneggiare le cose!
UpTheCreek,

1
In situazioni abilitate al journaling cosa fare se ricevo un errore di connessione rifiutata molto frequentemente?
Shashank,

149
Step 1: Remove lock file.
sudo rm /var/lib/mongodb/mongod.lock

Step 2: Repair mongodb. 
sudo mongod --repair 

Step 3: start mongodb.
sudo start mongodb 
or
sudo service mongodb start

Step 4: Check status of mongodb.
sudo status mongodb 
or   
sudo service mongodb status

Step 5: Start mongo console.
mongo 

1
ciao Nanhe Kumnar qual è il percorso iniziale nel terminale. Dovremmo andare su cd / usr / local / opt / mongodb / cartella o altro, sto affrontando il seguente problema Vijayvir-Singh: ~ vijayvir $ sudo rm /var/lib/mongodb/mongod.lock rm: / var / lib /mongodb/mongod.lock: nessun file o directory di questo tipo Vijayvir-Singh: ~ vijayvir $
Vijayvir Sing Pantlia

@vvss trova prima il percorso del file. Usa questo. individuare mongod.lock
Nanhe Kumar

9
Nella versione 2.4.8 è /data/db/mongod.lockinvece di/var/lib/mongodb/mongod.lock
Loolooii l'

84

Hai corso mongodprima di correre mongo?

Ho seguito le istruzioni di installazione per mongodb da http://docs.mongodb.org/manual/tutorial/install-mongodb-on-os-x/ e ho avuto lo stesso errore di te solo quando ho eseguito mongoprima di eseguire effettivamente il processo mongo con mongod. Pensavo che anche l'installazione di mongodb l'avrebbe avviato, ma è necessario avviarlo manualmente mongodprima di fare qualsiasi altra cosa che abbia bisogno di mongodb.


10
Questo era il mio problema. Sono sorpreso che ciò non sia chiarito in anticipo nei documenti "Come iniziare con Mongo".
jononomo,

Questo non ha davvero senso dal punto di vista dell'esperienza utente. mongo.exedovrebbe essere quello che avvia il DB.
Moshe Karmel,

58

Questo perché il processo di mongod è inattivo, è necessario eseguire i seguenti comandi per poter avviare il processo di mongod:

~$ sudo service mongodb stop

~$ sudo rm /var/lib/mongodb/mongod.lock

~$ sudo mongod --repair --dbpath /var/lib/mongodb

~$ sudo mongod --fork --logpath /var/lib/mongodb/mongodb.log --dbpath /var/lib/mongodb

~$ sudo service mongodb start

Spero che questo ti aiuti.


2
Problema risolto. Grazie. Aggiungerei i comandi sudo service mongod stope sudo service mongodb stopprima del primo comando perché alcune persone potrebbero averli ancora in esecuzione.
Georgi Georgiev,

1
Mi ha aiutato a riavviare il mongo. tuttavia non sono più in grado di accedere al vecchio database. Potresti per favore aiutarmi qui.
Ehsan,

13

Provare

sudo service mongodb start

Questo ha risolto il mio problema.


Qual'è la differenza tra sudo service mongod startesudo service mongodb start
geckob

Non ne sono così sicuro ma indovinare mongodb è il nome del servizio e mongod è il nome del file di programma.
潘博韜

7

Controlla lo spazio libero del tuo filesystem e aumentalo se è inferiore. Anche questo potrebbe far sì che il mongo non si avvii. Controllare il file /var/log/mongodb/mongodb.log.

ERROR: Insufficient free space for journal files
Please make at least 3379MB available in /var/lib/mongodb/journal or use --smallfiles

Questo è successo a me e ho aggiunto smallfiles = true al file /etc/mongod.conf
Carlos

7

Prova a correre mongodprima mongo.

sudo /usr/sbin/mongod sul mio opensuse

Questo ha risolto il mio problema,


6

quindi prima devi rimuovere il file mongod.lock dal comando seguente

sudo rm /var/lib/mongodb/mongod.lock

e quindi riavviare il servizio mongo immettendo il comando seguente

sudo service mongod restart 

4

Puoi verificare con netstat -anp | grep 27017per vedere se la porta è in uso da un altro processo.


strano, ho capito: alex @ alex-K43U: ~ $ netstat -anp | grep 27017 (Non tutti i processi potrebbero essere identificati, le informazioni sui processi non di proprietà non verranno mostrate, dovresti essere root per vederle tutte.)
alexchenco

2
Questo è un risultato normale quando si esegue come utente non root, poiché netstat mostrerà solo i processi che l'utente può vedere.
Efren,

puoi usare sudo netstat -anp | grep 27017 a passare quell'avvertimento
Wiston Coronell,

Questo funziona per me, grazie mille. Ottengo questo quando ho eseguito il codice dato unix 2 [] STREAM 31095 - /tmp/mongodb-27017.sock e ho rimosso il file .sock, ora è tutto a posto.
Abele,

4

In Windows esegui cmd come amministratore:

  1. Crea directory:

    mkdir c: \ mongo \ data \ db

  2. Servizio di installazione:

    mongod.exe --install --logpath c: \ mongo \ logs --logappend --bind_ip 127.0.0.1 --dbpath c: \ mongo \ data \ db --directoryperdb

  3. Avvia MongoDB:

    net start MongoDB

4.Avvia Mongo Shell:

c:\mongo\bin\mongo.exe

Questa soluzione funziona bene per me


3

Questo ha funzionato per me:

sudo rm /var/lib/mongodb/mongod.lock    
sudo service mongodb restart

3

Per riferimento futuro, attenersi alla seguente procedura per evitare errori simili:

1.Scarica MondoDB https://www.mongodb.com/

2.Aprire un terminale e un cd nella cartella dei download o in qualsiasi cartella in cui è stato salvato il download di mondodb (assicurarsi di estrarre la cartella mongodb prima di inserire il cd)

cd Downloads

3.Spostare mongodb sul percorso usr / local

sudo mv mongodb-osx-... /usr/local/mongodb

4.cd nella cartella locale

cd /usr/local/mongodb

5. creare una nuova directory

sudo mkdir -p /data/db

6.cd nella nuova directory appena creata sopra

cd /data/db

7. dare permessi di mongo

sudo chown YourMacUserName /data/db

8. Quindi vai / apri il tuo .bash_profile

Per fare ciò, attenersi alla seguente procedura:

Nel tuo nuovo terminale

1 . cd 2 .pwd 3 .ls -l

Controlla se il .bash_profile appare sul tuo elenco di file sul tuo terminale

in caso contrario, creare il -bash_profile

Creazione di .bash_profile:

Nel tuo terminale

toccare .bash_profile

// salta questo passaggio se hai già un .bash_profile

Step8:

Il prossimo nel tuo terminale:

open .bash_profile

E nel tuo file bash che si apre, aggiungi quanto segue:

MONGO_PATH=/usr/local/mongodb
export PATH=$PATH:$MONGO_PATH/bin

E poi salva (File Salva o comando S / CMD + S)

Step9: torna nel tuo terminale :

source .bash_profile

Ora apri due terminali . Uno sarà per il tuo demone mondo e l'altro per il tuo mongo .

Terminale 1: nel terminale digitare: mongod

mongodb

Produzione: Mongod Terminal

Terminale 2:

mongo

Produzione: Terminale Mongo

Assicurati anche di non commettere il seguente errore di battitura quando avvii il tuo mongod nel tuo terminale: Questo non è corretto

mongo d

emette il seguente errore : Impossibile connettersi a 127.0.0.1:27017, in (controllo socket per errore dopo poll), motivo: connessione rifiutata

Questo è corretto:

mongod

(Non ci dovrebbe essere spazio tra le parole mongo e d .. mondod

Infine, tieni sempre presente che devi correre mondod prima di correre mongo sui tuoi terminali .


2

Ho seguito il documento su http://docs.mongodb.org/manual/tutorial/install-mongodb-on-red-hat/ .

Dopo aver configurato e riavviato, ho eseguito sudo service mongod starte ottenuto ... [FAILED].

Alla fine, ho scoperto che mongodera iniziato. Penso che sia stato yum installaggiunto all'avvio automatico.

Per verificare se il vostro mongodè in esecuzione: service mongod status.

Spero che questo possa aiutare qualcuno ha lo stesso problema.


2

Dopo un frequente tentativo, finalmente sono riuscito a risolvere il problema ...

Step 1: ps aux | grep mongo
Step 2: sudo rm /var/lib/mongodb/mongod.lock
Step 3: sudo mongod --repair
Step 4: mongo

2

Questo errore potrebbe essere causato dall'impostazione IP di bind di MongoDB. Puoi controllare il file di configurazione di MongoDB da

$ sudo vi /etc/mongodb.conf

Nel mio caso, l'IP bind è impostato sull'indirizzo intranet del server, proprio come segue:

bind_ip = 10.10.1.14 
#port = 27017

Quindi ho dato a mongo un parametro IP per connettermi alla shell per tipo:

$ mongo 10.10.1.14

Non dimenticare di riavviare il servizio mongodb se hai modificato la configurazione.


2

Ho mongo versione 3.2.1 e ho dovuto eliminare il file di blocco da /data/db/e dopo questo, eseguito mongode avviato correttamente.

>rm /data/db/mongod.lock
>mongod


1

Dopo aver rimosso mongod.lock che si trovava all'interno della directory dei dati nel mio sistema operativo Windows, stava ancora mostrando lo stesso messaggio di errore. Ho dovuto eseguire mongod con --dbpath per far funzionare il comando mongo senza errori.


1

Anche se le risposte sono state ricevute, vorrei discutere degli errori di rete in MongoDB.

Errori di rete MongoDB

L'impostazione dei problemi di scrittura sicura non è il metodo di prova completa per assicurarsi che siamo al sicuro. Supponiamo che w=1& j=truesono impostati, cosa succede se il riconoscimento di scrittura non è stato ricevuto dal server? Bene, la probabilità è che non sia successo, ma potrebbe essere successo. Il motivo per cui questo potrebbe essere successo è che ci sono errori di rete - ci sono ragioni per cui potremmo non ricevere una risposta affermativa. Quindi, possiamo inviare la richiesta dall'applicazione tramite un driver di lingua di scelta. mongodpuò completarlo correttamente e quindi potrebbe esserci un ripristino TCP e la rete può effettivamente essere ripristinata in un modo che non riceviamo mai risposta. Quindi, potremmo ottenere un errore e sull'errore, potremmo presumere che abbiamo ricevuto un errore. Non è successo, ma può succedere.

Per un inserto, è possibile proteggerlo. È possibile perché se lasciamo che il driver crei _ide facciamo un inserimento, allora potremmo farlo inserire più volte e sarebbe un danno. Perché, se facciamo questo 1 ° tempo e otteniamo un errore e non siamo sicuri che sia o meno inserto completata perché si tratta di un errore di rete, allora potremmo solo farlo di nuovo. E a condizione che lo eseguiamo di nuovo, Tyr per eseguirlo con l'esatto _id. Lo scenario peggiore è che verrà visualizzato un errore di chiave duplicata quando si tenta di inserirlo.

Tuttavia, un aggiornamento è dove si verifica il problema. Soprattutto, l'aggiornamento che non è un elemento potente, che ad esempio includeva un $inkcomando. Quindi, stiamo dicendo al database di incrementare un determinato campo. Bene, in tal caso, se riceviamo un errore di rete e non sappiamo se si è verificato l'aggiornamento. Ora, forse sappiamo abbastanza sui valori che possiamo verificare con loro che si sia verificato l'aggiornamento, il che va bene. Ma se non conosciamo il valore iniziale nel database per quel campo, non è possibile per noi sapere se si è verificato o meno in caso di errore di rete. Questo tipo di problemi sono estremamente rari con una buona rete.

E se abbiamo davvero bisogno di evitarlo a tutti i costi, ciò che dobbiamo fare è attivare tutti i nostri aggiornamenti in inserti, leggendo l'intero valore del documento dal database e quindi potenzialmente eliminandolo e inserendolo di nuovo o semplicemente inserendo uno nuovo.

I motivi per cui un'applicazione potrebbe ricevere un errore anche se la scrittura ha avuto esito positivo:

  • La connessione TCP di rete tra l'applicazione e il server è stata ripristinata dopo che il server ha ricevuto una scrittura ma prima che potesse essere inviata una risposta.
  • Il MongoDBserver termina tra la ricezione della scrittura e la risposta ad essa.
  • La rete ha esito negativo tra l'ora della scrittura e l'ora in cui il client riceve una risposta alla scrittura.

1

Questo funziona per me Per interrompere l'uso di mongodb:

use admin
db.shutdownServer()

E per riavviare:

sudo service mongod restart


0

Aggiunta del cestino a PATH in Variabili d'ambiente aiutata.

Percorso di installazione GOTO e copia ../bin nelle variabili PATH nelle variabili di ambiente in Windows


0

digitare windows + r e inserire quanto segue

services.msc

avviare MongoDB

ora digita "mongo" in cmd nel rispettivo percorso in cui è presente mongo.exe, inizierà a funzionare.


0

1.Creare una nuova cartella nell'unità d D: / data / db

2.Aprire il terminale su D: / data / db

3. Digitare mongod ed entrare.

4. Digitare mongo ed entrare.

e il tuo mongodb ha impostato ............



0

semplice Run Two lo elogia

sudo rm /var/lib/mongodb/mongod.lock
sudo mongod --repair 



0

Err: Impossibile connettersi al server 127.0.0.1:27017

Questa è la soluzione per gli utenti WINDOWS che immettono il codice qui 1. Crea directory:

mkdir c:\mongo\data\db
  1. Installa il servizio: prima vai alla tua cartella bin nei file di programmi di MongoDB con cd

mongod.exe --install --logpath

  1. Avvia MongoDB:

    net start MongoDB

4.Avvia Mongo Shell:

`c:\mongo\bin\mongo.exe` or

vai fino al cestino e inserisci mongo

Nota: aprire il terminale in modalità amministratore


0

Ubuntu 18.04LTS: il problema sorge quando ho disinstallato completamente la mia versione precedente e installato 4.2.6

Dopo ore di google, ho risolto un altro problema

Impossibile avviare MongoDB - *** interruzione dopo errore fassert ()

Ero senza speranza che il problema non potesse connettersi al server , perché tutto sembra a posto.

Alla fine, ho deciso di riavviare il sistema operativo e indovinare cosa ... BINGO

sudo mongo // works like a charm
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.