Es konnte keine Verbindung zum Server 127.0.0.1:27017 hergestellt werden


160

Ich erhalte die folgende Fehlermeldung:

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:/$ 

Folgendes passiert, wenn ich versuche, mongodb zu starten:

* Starting database mongodb                                             [fail]

Ich habe es schon versucht mongo --repair

Ich habe chown und chmod zu var, lib und data / db und log mongodb gemacht.

Ich bin mir nicht sicher, was ich sonst tun soll. Irgendwelche Vorschläge?

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

BEARBEITEN:

Ich habe das Schloss entfernt, dann mongod repariert und diesen Fehler erhalten:

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

also habe ich es mit sudo gemacht:

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

Aber immer noch das gleiche Problem.


1
Ich denke, dieser Link wird Ihnen helfen, stackoverflow.com/questions/9647561/…, indem Sie den Datenbankpfad von Mongo
Med7at

8
sudo service mongod restartarbeitete für mich
Sudip Bhandari

Antworten:


31

Das Protokoll zeigt an, dass mongodb beendet wird, weil eine alte Sperrdatei vorhanden ist.

Wenn Sie kein Journaling haben und nicht ausgeführt haben, entfernen Sie die Sperrdatei, führen Sie die Reparatur aus und starten Sie mongodb erneut.

Wenn Sie mit aktiviertem Journal arbeiten oder ausgeführt wurden, lesen Sie die entsprechenden Mongo DB-Dokumente . Beachten Sie, dass dort steht: "Wenn Sie mit Journaling arbeiten, sollten Sie keine Reparatur durchführen, um einen konsistenten Zustand wiederherzustellen." Wenn Sie also ein Journal erstellt haben, hat die Reparatur möglicherweise die Situation verschlimmert.


25
Das ist schlimm, dass eine Reparatur Dinge beschädigen kann!
UpTheCreek

1
Was kann ich in einer Situation tun, in der ein Journal aktiviert ist?
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
Hallo Nanhe Kumnar, was ist der Anfangspfad im Terminal? Sollten wir zu cd / usr / local / opt / mongodb / folder oder einem anderen gehen, habe ich folgendes Problem: Vijayvir-Singh: ~ vijayvir $ sudo rm /var/lib/mongodb/mongod.lock rm: / var / lib /mongodb/mongod.lock: Keine solche Datei oder Verzeichnis Vijayvir-Singh: ~ vijayvir $
Vijayvir Sing Pantlia

@vvss finde zuerst den Pfad der Datei. benutze das. Finden Sie mongod.lock
Nanhe Kumar

9
In Version 2.4.8 ist es /data/db/mongod.lockanstelle von/var/lib/mongodb/mongod.lock
Loolooii

83

Bist du gelaufen, mongodbevor du gelaufen bist mongo?

Ich habe die Installationsanweisungen für mongodb von http://docs.mongodb.org/manual/tutorial/install-mongodb-on-os-x/ befolgt und hatte den gleichen Fehler wie Sie nur, als ich ausgeführt habe, mongobevor ich den mongo-Prozess tatsächlich ausgeführt habe mongod. Ich dachte, die Installation von Mongodb würde es auch starten, aber Sie müssen es manuell starten, mongodbevor Sie etwas anderes tun, das Mongodb benötigt.


10
Das war mein Problem. Ich bin überrascht, dass dies in den Dokumenten "Erste Schritte mit Mongo" nicht im Voraus klargestellt wird.
Jononomo

Dies macht aus Sicht der Benutzererfahrung wirklich keinen Sinn. mongo.exesollte derjenige sein, der die DB startet.
Moshe Karmel

58

Dies liegt daran, dass der Mongod-Prozess nicht funktioniert. Sie müssen die folgenden Befehle ausführen, um den Mongod-Prozess zu starten:

~$ 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

Hoffe das hilft dir.


2
Problem gelöst. Danke dir. Ich würde die Befehle sudo service mongod stopund sudo service mongodb stopvor dem ersten Befehl hinzufügen, da einige Leute sie möglicherweise noch ausführen .
Georgi Georgiev

1
Es hat mir geholfen, den Mongo neu zu starten. Ich kann jedoch nicht mehr auf die alte Datenbank zugreifen. Könnten Sie mir bitte hier helfen?
Ehsan

13

Versuchen

sudo service mongodb start

Dies löste mein Problem.


Was ist der Unterschied zwischen sudo service mongod startundsudo service mongodb start
Geckob

Ich bin mir nicht so sicher, aber ich vermute, Mongodb ist der Name des Dienstes und Mongod ist der Name der Programmdatei.
16.

7

Überprüfen Sie den freien Speicherplatz Ihres Dateisystems und erhöhen Sie ihn, wenn er geringer ist. Dies könnte auch dazu führen, dass der Mongo nicht startet. Überprüfen Sie die Datei /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

Dies passierte mir und ich fügte smallfiles = true zur Datei /etc/mongod.conf hinzu
Carlos

7

Versuchen Sie es mongodvorher mongo.

sudo /usr/sbin/mongod auf meiner opensuse

Dies löste mein Problem,


6

Also müssen Sie zuerst die Datei mongod.lock mit dem folgenden Befehl entfernen

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

und starten Sie dann den Mongo-Dienst neu, indem Sie den folgenden Befehl eingeben

sudo service mongod restart 

4

Sie können mit überprüfen netstat -anp | grep 27017, ob der Port von einem anderen Prozess verwendet wird.


seltsam, ich habe folgendes: alex @ alex-K43U: ~ $ netstat -anp | grep 27017 (Nicht alle Prozesse konnten identifiziert werden, nicht im Besitz befindliche Prozessinformationen werden nicht angezeigt. Sie müssten root sein, um alles zu sehen.)
alexchenco

2
Dies ist ein normales Ergebnis bei der Ausführung als Nicht-Root-Benutzer, da netstat nur Prozesse anzeigt, die Ihr Benutzer sehen darf.
Efren

Sie können sudo netstat -anp | verwenden grep 27017, um diese Warnung zu umgehen
Wiston Coronell

Dieser funktioniert für mich, vielen Dank. Ich bekomme dies, wenn ich den angegebenen Code Unix 2 [] STREAM 31095 - /tmp/mongodb-27017.sock ausgeführt und die .sock-Datei entfernt habe, jetzt ist alles in Ordnung.
Abel

4

Führen Sie in Windows cmd als Admin aus:

  1. Verzeichnis erstellen:

    mkdir c: \ mongo \ data \ db

  2. Installationsdienst:

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

  3. Starten Sie MongoDB:

    Nettostart MongoDB

4.Starten Sie Mongo Shell:

c:\mongo\bin\mongo.exe

Diese Lösung funktioniert gut für mich


3

Das hat bei mir funktioniert:

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

3

Führen Sie die folgenden Schritte aus, um ähnliche Fehler zu vermeiden:

1. Laden Sie MondoDB https://www.mongodb.com/ herunter.

2.Öffnen Sie ein Terminal und eine CD in Ihrem Download- Ordner oder in einem beliebigen Ordner, in dem Sie Ihren Mondodb-Download gespeichert haben.

cd Downloads

3. Bewegen Sie mongodb auf Ihren usr / lokalen Pfad

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

4.cd in Ihren lokalen Ordner

cd /usr/local/mongodb

5. Erstellen Sie ein neues Verzeichnis

sudo mkdir -p /data/db

6.cd in das neue Verzeichnis, das gerade oben erstellt wurde

cd /data/db

7. Geben Sie Mongo-Berechtigungen

sudo chown YourMacUserName /data/db

8. Dann öffnen Sie Ihr .bash_profile

Gehen Sie dazu folgendermaßen vor:

In Ihrem ein neues Terminal

1 . cd 2 .pwd 3 .ls -l

Überprüfen Sie, ob das .bash_profile in Ihrer Dateiliste auf Ihrem Terminal angezeigt wird

Wenn nicht, erstellen Sie das -bash_profile

.Bash_profile erstellen:

In Ihrem Terminal

Berühren Sie .bash_profile

// überspringe diesen Schritt, wenn du bereits ein .bash_profile hast

Schritt 8:

Weiter in Ihrem Terminal:

open .bash_profile

Fügen Sie in Ihrer geöffneten Bash-Datei Folgendes hinzu:

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

Und dann speichern (Datei speichern oder Befehl S / CMD + S)

Schritt 9: Zurück in Ihrem Terminal :

source .bash_profile

Nun öffnen zwei Terminals .One für Ihren mondo Daemon die andere für Ihre Mongo .

Terminal 1: In Ihrem Terminal Typ: Mongod

mongodb

Ausgabe: Mongod Terminal

Terminal 2:

mongo

Ausgabe: Mongo Terminal

Stellen Sie außerdem sicher, dass Sie beim Starten Ihres Mongods in Ihrem Terminal nicht den folgenden Tippfehler machen: Dies ist falsch

mongo d

gibt den folgenden Fehler aus : Verbindung zu 127.0.0.1:27017 fehlgeschlagen, in (Socket nach Abfrage auf Fehler prüfen), Grund: Verbindung abgelehnt

Das ist richtig:

mongod

(Zwischen den Wörtern mongo und d .. mondod sollte kein Leerzeichen stehen

Denken Sie zum Schluss immer daran, dass Sie mondod ausführen müssen, bevor Sie mongo auf Ihren Terminals ausführen .


2

Ich folgte dem Dokument unter http://docs.mongodb.org/manual/tutorial/install-mongodb-on-red-hat/ .

Nach dem Konfigurieren und Neustarten habe ich ausgeführt sudo service mongod startund bekommen ... [FAILED].

Endlich stellte ich fest, dass mongoddas begonnen hatte. Ich denke das yum installhat es zum Autostart hinzugefügt.

So überprüfen Sie, ob Ihr ausgeführt mongodwird : service mongod status.

Hoffe das kann jemandem helfen hat das gleiche Problem.


2

Nach häufigem Versuch konnte ich endlich das Problem beheben ...

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

2

Dieser Fehler kann durch die Bindungs-IP-Einstellung der MongoDB verursacht werden. Sie können die Konfigurationsdatei von MongoDB mit überprüfen

$ sudo vi /etc/mongodb.conf

In meinem Fall wird die Bindungs-IP wie folgt auf die Intranet-Adresse des Servers festgelegt:

bind_ip = 10.10.1.14 
#port = 27017

Also habe ich mongo einen IP-Parameter gegeben, um nach Typ eine Verbindung zur Shell herzustellen:

$ mongo 10.10.1.14

Vergessen Sie nicht, den Mongodb-Dienst neu zu starten, wenn Sie die Konfiguration geändert haben.


2

Ich habe Mongo Version 3.2.1 und musste die Sperrdatei aus löschen /data/db/und danach lief mongodund es erfolgreich gestartet.

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


1

Nach dem Entfernen von mongod.lock, das sich in meinem Windows-Betriebssystem im Datenverzeichnis befand, wurde immer noch dieselbe Fehlermeldung angezeigt. Ich musste mongod mit --dbpath ausführen, damit der mongo-Befehl fehlerfrei ausgeführt wurde.


1

Obwohl die Antworten eingegangen sind, möchte ich über Netzwerkfehler in diskutieren MongoDB.

Netzwerkfehler MongoDB

Das Festlegen der Bedenken hinsichtlich des sicheren Schreibens ist nicht die vollständige Beweismethode, um sicherzustellen, dass wir sicher sind. Nehmen wir an, dass w=1& j=truegesetzt sind. Was passiert, wenn die Schreibbestätigung nicht vom Server empfangen wurde? Nun, die Wahrscheinlichkeit ist, dass es nicht passiert ist, aber es könnte passiert sein. Der Grund, warum dies möglicherweise passiert ist, ist, dass Netzwerkfehler vorliegen. Es gibt Gründe, warum wir möglicherweise keine positive Antwort erhalten. So können wir die Anfrage aus der Anwendung über einen Treiber der Sprache Ihrer Wahl senden.mongodkann es erfolgreich abschließen und dann könnte es zu einem TCP-Reset kommen, und das Netzwerk kann tatsächlich so zurückgesetzt werden, dass wir keine Antwort erhalten. Wir könnten also einen Fehler bekommen und bei dem Fehler könnten wir annehmen, dass wir einen Fehler bekommen haben. Es ist nicht passiert, aber es kann passieren.

Für einen Einsatz ist es möglich, sich dagegen zu schützen. Es ist möglich, denn wenn wir den Treiber das erstellen lassen _idund eine Einfügung vornehmen, können wir diese Einfügung mehrmals ausführen, und es wäre schädlich. Denn wenn wir diese 1 tun st Zeit und wir bekommen einen Fehler und wir sind nicht sicher , ob dieser Einsatz abgeschlossen , weil es ein Netzwerkfehler ist, dann könnten wir es einfach wieder tun. Und vorausgesetzt, wir führen es erneut durch, Tyr, um es genau auszuführen _id. Im schlimmsten Fall wird beim Einfügen ein doppelter Schlüsselfehler angezeigt.

Bei einem Update tritt jedoch das Problem auf. Insbesondere das Update, das nicht item-potent ist, das zum Beispiel a$ink Befehl . Wir weisen die Datenbank also an, ein bestimmtes Feld zu erhöhen. In diesem Fall, wenn wir einen Netzwerkfehler erhalten und nicht wissen, ob das Update stattgefunden hat oder nicht. Vielleicht wissen wir genug über die Werte, mit denen wir überprüfen können, ob das Update stattgefunden hat, was in Ordnung ist. Wenn wir jedoch den Startwert in der Datenbank für dieses Feld nicht kennen, können wir nicht wissen, ob er im Falle eines Netzwerkfehlers aufgetreten ist oder nicht. Diese Art von Problemen ist bei einem guten Netzwerk äußerst selten.

Und wenn wir es wirklich um jeden Preis vermeiden müssen, müssen wir alle unsere Aktualisierungen in Einfügungen umwandeln, indem wir den vollständigen Wert des Dokuments aus der Datenbank lesen und es dann möglicherweise löschen und erneut einfügen oder einfach einfügen ein neuer.

Die Gründe, warum eine Anwendung möglicherweise einen Fehler zurückerhält, selbst wenn der Schreibvorgang erfolgreich war:

  • Die Netzwerk-TCP-Verbindung zwischen der Anwendung und dem Server wurde zurückgesetzt, nachdem der Server einen Schreibvorgang erhalten hatte, aber bevor eine Antwort gesendet werden konnte.
  • Der MongoDBServer wird zwischen dem Empfang des Schreibvorgangs und der Antwort darauf beendet.
  • Das Netzwerk fällt zwischen dem Zeitpunkt des Schreibens und dem Zeitpunkt aus, zu dem der Client eine Antwort auf den Schreibvorgang erhält.

1

Dies funktioniert für mich Um den Mongodb-Gebrauch zu stoppen:

use admin
db.shutdownServer()

Und zum Neustart:

sudo service mongod restart

0

Das Hinzufügen des Bin zu PATH in Umgebungsvariablen hat geholfen.

GOTO Installationspfad und kopieren Sie die ../bin in die PATH-Variablen in Umgebungsvariablen in Windows


0

Geben Sie windows + r ein und geben Sie Folgendes ein

services.msc

Starten Sie MongoDB

Geben Sie nun "mongo" in cmd in den entsprechenden Pfad ein, in dem die Datei mongo.exe vorhanden ist. Die Arbeit beginnt.


0

1.Erstellen Sie einen neuen Ordner in Laufwerk D: / data / db

2.Öffnen Sie das Terminal an D: / data / db

3. Geben Sie mongod ein und geben Sie ein.

4. Geben Sie mongo ein und geben Sie ein.

und dein mongodb hat geschuftet ............



0

einfache Run Two-Empfehlungen

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



0

Err: Es konnte keine Verbindung zum Server 127.0.0.1:27017 hergestellt werden

Dies ist eine Lösung für WINDOWS-Benutzer, die hier Code eingeben. 1. Verzeichnis erstellen:

mkdir c:\mongo\data\db
  1. Installationsdienst: Wechseln Sie zuerst mit cd in Ihr bin-Verzeichnis in den Programmdateien von MongoDB

mongod.exe --install --logpath

  1. Starten Sie MongoDB:

    net start MongoDB

4.Starten Sie Mongo Shell:

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

Gehe zu bis bin und betrete mongo

Hinweis: Öffnen Sie das Terminal im Administratormodus


0

Ubuntu 18.04LTS: Das Problem tritt auf, wenn ich meine vorherige Version vollständig deinstalliert und 4.2.6 installiert habe

Nachdem ich stundenlang gegoogelt hatte, löste ich ein anderes Problem

MongoDB startet nicht - *** Abbruch nach fassert ()

Ich war hoffnungslos über das Problem konnte keine Verbindung zum Server herstellen , da alles in Ordnung zu sein scheint.

Schließlich entschied ich mich, das Betriebssystem neu zu starten und zu raten, was ... BINGO

sudo mongo // works like a charm

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.