Nie można połączyć się z serwerem 127.0.0.1:27017


160

Otrzymuję następujący błąd:

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

Oto, co się dzieje, gdy próbuję uruchomić mongodb:

* Starting database mongodb                                             [fail]

Już próbowałem mongo --repair

Zrobiłem chown i chmod do var, lib oraz data / db i log mongodb.

Nie wiem, co jeszcze zrobić. Jakieś sugestie?

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

EDYTOWAĆ:

Usunąłem blokadę, a następnie zrobiłem mongod naprawę i otrzymałem ten błąd:

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

więc zrobiłem to z 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

Ale nadal mam ten sam problem.


1
myślę, że ten link pomoże ci stackoverflow.com/questions/9647561/ ... zmieniając ścieżkę db mongo
— Med7at

8
sudo service mongod restartpracował dla mnie
— Sudip Bhandari

Odpowiedzi:


31

Dziennik wskazuje, że mongodb kończy działanie, ponieważ istnieje stary plik blokady.

Jeśli nie korzystasz z kronikowania, usuń plik blokady, uruchom naprawę i ponownie uruchom mongodb.

Jeśli korzystasz lub działałeś z włączonym rejestrowaniem, zapoznaj się z odpowiednią dokumentacją Mongo DB . Zauważ, że mówią „Jeśli korzystasz z kronikowania, nie powinieneś wykonywać naprawy, aby przywrócić spójny stan”. Więc gdybyś rejestrował, naprawa mogła pogorszyć sytuację.


25
To źle, że naprawa może uszkodzić rzeczy!
— UpTheCreek

1
W sytuacji z włączonym kronikowaniem co zrobić, jeśli bardzo często otrzymuję błąd odmowy połączenia?
— 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
cześć Nanhe Kumnar, jaka jest początkowa ścieżka w terminalu. Czy powinniśmy przejść do folderu cd / usr / local / opt / mongodb / czy innego, mam następujący problem Vijayvir-Singh: ~ vijayvir $ sudo rm /var/lib/mongodb/mongod.lock rm: / var / lib /mongodb/mongod.lock: Nie ma takiego pliku lub katalogu Vijayvir-Singh: ~ vijayvir $
— Vijayvir Sing Pantlia

@vvss najpierw znajdź ścieżkę do pliku. Użyj tego. locate mongod.lock
— Nanhe Kumar,

9
W wersji 2.4.8 jest to /data/db/mongod.lockzamiast/var/lib/mongodb/mongod.lock
— Loolooii

84

Czy biegałeś mongodprzed biegiem mongo?

Postępowałem zgodnie z instrukcjami instalacji dla mongodb z http://docs.mongodb.org/manual/tutorial/install-mongodb-on-os-x/ i miałem ten sam błąd co ty tylko wtedy, gdy uruchomiłem mongoprzed uruchomieniem procesu mongo z mongod. Myślałem, że zainstalowanie mongodb również by go uruchomiło, ale musisz uruchomić go ręcznie, mongodzanim zrobisz cokolwiek innego, co wymaga mongodb.


10
To był mój problem. Dziwię się, że nie jest to wyjaśnione z góry w dokumentach „Pierwsze kroki z Mongo”.
— jononomo

To naprawdę nie ma sensu z perspektywy User Experience. mongo.exepowinien być tym, który uruchamia DB.
— Moshe Karmel

58

Dzieje się tak, ponieważ proces mongod jest wyłączony, musisz uruchomić poniższe polecenia, aby uruchomić proces 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

Mam nadzieję, że to ci pomoże.


2
Problem rozwiązany. Dziękuję Ci. Dodałbym polecenia sudo service mongod stopi sudo service mongodb stopprzed pierwszym poleceniem, ponieważ niektórzy ludzie mogą nadal mieć je uruchomione.
— Georgi Georgiev

1
Pomogło mi to zrestartować mongo. jednak nie mam już dostępu do starej bazy danych. Czy mógłbyś mi tutaj pomóc?
— Ehsan,

13

Próbować

sudo service mongodb start

To rozwiązało mój problem.


Jaka jest różnica pomiędzy sudo service mongod start isudo service mongodb start
— geckob

Nie jestem tego taki pewien, ale zgaduję, że mongodb to nazwa usługi, a mongod to nazwa pliku programu.
— 潘博韜

7

Sprawdź wolne miejsce w systemie plików i zwiększ je, jeśli jest mniejsze. Może to również spowodować, że mongo się nie uruchomi. Sprawdź plik /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

Zdarzyło mi się to i dodałem smallfiles = true do pliku /etc/mongod.conf
— Carlos

7

Spróbuj biegać mongod wcześniej mongo.

sudo /usr/sbin/mongod na moim opensuse

To rozwiązało mój problem,


6

więc najpierw musisz usunąć plik mongod.lock za pomocą poniższego polecenia

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

a następnie uruchom ponownie usługę mongo, wydając poniższe polecenie

sudo service mongod restart 

4

Możesz sprawdzić, netstat -anp | grep 27017czy port jest używany przez inny proces.


dziwne, mam to: alex @ alex-K43U: ~ $ netstat -anp | grep 27017 (Nie można zidentyfikować wszystkich procesów, informacje o procesach nienależących do firmy nie zostaną wyświetlone, musisz być rootem, aby zobaczyć wszystko.)
— alexchenco

2
Jest to normalny wynik podczas wykonywania operacji jako użytkownik inny niż root, ponieważ netstat pokaże tylko procesy, które użytkownik może zobaczyć.
— Efren

możesz użyć sudo netstat -anp | grep 27017, aby ominąć to ostrzeżenie
— Wiston Coronell

Ten działa dla mnie, wielkie dzięki. Dostaję to, gdy uruchomiłem podany kod unix 2 [] STREAM 31095 - /tmp/mongodb-27017.sock i usunąłem plik .sock, teraz wszystko jest w porządku.
— Abel

4

W systemie Windows uruchom cmd jako administrator:

  1. Utworzyć katalog:

    mkdir c: \ mongo \ data \ db

  2. Zainstaluj usługę:

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

  3. Uruchom MongoDB:

    net start MongoDB

4. Uruchom powłokę Mongo:

c:\mongo\bin\mongo.exe

To rozwiązanie działa dobrze dla mnie


3

To zadziałało dla mnie:

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

3

Na przyszłość wykonaj następujące kroki, aby uniknąć podobnych błędów:

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

2.Otwórz terminal i cd do folderu pobierania lub innego folderu, w którym zapisałeś swoje pobieranie mondodb (upewnij się, że wypakowałeś folder mongodb przed włożeniem do niego dysku CD)

cd Downloads

3. Przenieś mongodb na ścieżkę usr / local

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

4.cd do folderu lokalnego

cd /usr/local/mongodb

5. utwórz nowy katalog

sudo mkdir -p /data/db

6.cd do nowo utworzonego katalogu

cd /data/db

7. nadaj uprawnienia mongo

sudo chown YourMacUserName /data/db

8. Następnie przejdź do / otwórz swój .bash_profile

Aby to zrobić, wykonaj następujące kroki:

W swoim nowym terminalu

1 . cd 2 .pwd 3 .ls -l

Sprawdź, czy .bash_profile pojawia się na liście plików na Twoim terminalu

jeśli nie, utwórz -bash_profile

Tworzenie .bash_profile:

W twoim terminalu

dotknij .bash_profile

// pomiń ten krok, jeśli masz już plik .bash_profile

Krok 8:

Następnie w terminalu:

open .bash_profile

W pliku bash, który się otworzy, dodaj:

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

A następnie zapisz . (Plik Zapisz lub polecenie S / CMD + S)

Krok 9: z powrotem w terminalu :

source .bash_profile

Teraz otwórz dwa terminale. Jeden będzie dla twojego demona mondo, drugi dla twojego mongo .

Terminal 1: w terminalu wpisz: mongod

mongodb

Wynik: Terminal Mongod

Terminal 2:

mongo

Wynik: Terminal Mongo

Upewnij się również, że nie popełnisz następującego błędu literowego podczas uruchamiania mongod w terminalu: To jest nieprawidłowe

mongo d

daje następujący błąd : Nie można połączyć się z 127.0.0.1:27017, w (sprawdzanie gniazda pod kątem błędu po sondowaniu), przyczyna: Odmowa połączenia

To jest poprawne:

mongod

(Pomiędzy słowami mongo i d .. mondod nie powinno być spacji

Na koniec zawsze pamiętaj, że przed uruchomieniem mongo na terminalach musisz uruchomić mondod .



2

Po częstych próbach w końcu udało mi się rozwiązać problem ...

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

2

Ten błąd może być spowodowany ustawieniem adresu IP powiązania bazy danych MongoDB. Możesz sprawdzić plik konfiguracyjny MongoDB przez

$ sudo vi /etc/mongodb.conf

W moim przypadku adres IP wiązania jest ustawiony na adres intranetowy serwera, tak jak poniżej:

bind_ip = 10.10.1.14 
#port = 27017

Więc dałem mongo parametr IP, aby połączyć się z powłoką według typu:

$ mongo 10.10.1.14

Nie zapomnij zrestartować usługi mongodb, jeśli zmieniłeś config.


2

Mam mongo w wersji 3.2.1 i musiałem usunąć plik blokady, /data/db/a następnie uruchomiłem mongodi uruchomiono się pomyślnie.

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


1

Po usunięciu mongod.lock, który znajdował się w katalogu danych w moim systemie operacyjnym Windows, nadal wyświetlał ten sam komunikat o błędzie. Musiałem uruchomić mongod z --dbpath, aby polecenie mongo działało bez błędów.


1

Chociaż otrzymałem odpowiedzi, chciałbym omówić błędy sieciowe w MongoDB.

Błędy sieciowe MongoDB

Określenie obaw dotyczących bezpiecznego zapisu nie jest metodą pełnego sprawdzenia, czy jesteśmy bezpieczni. Załóżmy, że ustawione są w=1& j=true, co się stanie, jeśli potwierdzenie zapisu nie zostanie odebrane z serwera? Cóż, prawdopodobnie tak się nie stało, ale mogło się wydarzyć. Powodem, dla którego mogło się to zdarzyć, są błędy sieciowe - są powody, dla których możemy nie otrzymać odpowiedzi twierdzącej. Możemy więc wysłać żądanie z aplikacji za pośrednictwem sterownika w wybranym języku. mongodmożna go pomyślnie zakończyć, a następnie może nastąpić reset TCP, a sieć faktycznie może zostać zresetowana w taki sposób, że nigdy nie otrzymamy odpowiedzi. Mogliśmy więc otrzymać błąd, a po błędzie możemy założyć, że wystąpił błąd. To się nie wydarzyło, ale może się zdarzyć.

W przypadku wkładki można się przed nią ustrzec. Jest to możliwe, ponieważ jeśli pozwolimy kierowcy stworzyć _idplik i zrobimy wstawkę - wtedy moglibyśmy to wstawić wiele razy i byłoby to szkodliwe. Ponieważ, jeśli zrobimy to pierwszy raz i otrzymamy błąd i nie jesteśmy pewni, czy ta wstawka została zakończona, ponieważ jest to błąd sieci, możemy to zrobić ponownie. I pod warunkiem, że wykonamy to ponownie, możesz wykonać to dokładnie_id . Najgorszym scenariuszem jest to, że podczas próby wstawienia otrzymamy zduplikowany błąd klucza.

Jednak aktualizacja jest miejscem, w którym występuje problem. Zwłaszcza aktualizacja, która nie jest potężna, na przykład obejmowała$ink polecenie. Więc mówimy bazie danych, aby zwiększyła określone pole. W takim przypadku, jeśli otrzymamy błąd sieciowy i nie wiemy, czy aktualizacja nastąpiła. Teraz może wiemy wystarczająco dużo o wartościach, abyśmy mogli z nimi sprawdzić, czy nastąpiła aktualizacja, co jest w porządku. Ale jeśli nie znamy wartości początkowej w bazie danych dla tego pola, nie możemy wiedzieć, czy wystąpił, czy nie, w przypadku błędu sieci. Tego rodzaju problemy są niezwykle rzadkie w przypadku dobrej sieci.

A jeśli naprawdę musimy tego uniknąć za wszelką cenę, to co musimy zrobić, to włączyć wszystkie nasze aktualizacje we wstawkach, odczytując pełną wartość dokumentu z bazy danych, a następnie potencjalnie usuwając go i wstawiając ponownie lub po prostu wstawiając nowy.

Powody, dla których aplikacja może otrzymać zwrotny błąd, nawet jeśli zapis się powiódł:

  • Sieciowe połączenie TCP między aplikacją a serwerem zostało zresetowane po tym, jak serwer otrzymał zapis, ale przed wysłaniem odpowiedzi.
  • MongoDBSerwer kończy między otrzymania zapisu i reagowania na nią.
  • Sieć ulega awarii między momentem zapisu a momentem otrzymania przez klienta odpowiedzi na zapis.

1

To działa dla mnie, aby zatrzymać używanie mongodb:

use admin
db.shutdownServer()

Aby ponownie uruchomić:

sudo service mongod restart


0

Dodanie bin do PATH w zmiennych środowiskowych pomogło.

GOTO Installation Path i skopiuj ../bin do zmiennych PATH w zmiennych środowiskowych w Windows


0

wpisz windows + r i wprowadź następujące polecenie

services.msc

uruchom MongoDB

teraz wpisz „mongo” w cmd w odpowiedniej ścieżce, w której znajduje się plik mongo.exe, zacznie działać.


0

1. utwórz nowy folder na dysku d D: / data / db

2. otwórz terminal na D: / data / db

3. Wpisz mongod i wprowadź.

4. Wpisz mongo i wprowadź.

a twój mongodb zawarł ............






0

Błąd: nie można połączyć się z serwerem 127.0.0.1:27017

To rozwiązanie dla użytkowników WINDOWS wprowadź kod tutaj 1. Utwórz katalog:

mkdir c:\mongo\data\db
  1. Zainstaluj usługę: najpierw przejdź do katalogu bin w plikach programów MongoDB za pomocą cd

mongod.exe --install --logpath

  1. Uruchom MongoDB:

    net start MongoDB

4. Uruchom powłokę Mongo:

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

idź do aż bin i wejdź mongo

Uwaga: Otwórz terminal w trybie administratora


0

Ubuntu 18.04LTS: Problem pojawia się, gdy całkowicie odinstalowałem poprzednią wersję i zainstalowałem 4.2.6

Po godz. Googlowania rozwiązałem kolejny problem

MongoDB Failing to Start - *** przerywanie po awarii fassert ()

Byłem beznadziejny, że problem nie mógł połączyć się z serwerem , ponieważ wszystko wydaje się w porządku.

W końcu zdecydowałem się zrestartować system operacyjny i zgadnij co ... BINGO

sudo mongo // works like a charm
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.