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.

alexchenco
źródło
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ę.

Trott
źródło
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 
Nanhe Kumar
źródło
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.

eloone
źródło
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.

Javier Gomez
źródło
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.

潘博韜
źródło
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
msnfreaky
źródło
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,

Kiran P.
źródło
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 
user3470929
źródło
4

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

Efren
źródło
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

Luke Le
źródło
3

To zadziałało dla mnie:

sudo rm /var/lib/mongodb/mongod.lock    
sudo service mongodb restart
yogesh singh
źródło
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 .

RileyManda
źródło
2

Śledziłem dokument pod adresem http://docs.mongodb.org/manual/tutorial/install-mongodb-on-red-hat/ .

Po skonfigurowaniu i ponownym uruchomieniu uruchomiłem sudo service mongod starti otrzymałem ... [FAILED].

W końcu okazało się, że mongodto się zaczęło. Myślę, że yum installdodałem go do automatycznego startu.

Aby sprawdzić, czy mongoddziała: service mongod status.

Mam nadzieję, że to pomoże komuś, kto ma ten sam problem.

yangsibai
źródło
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
Narendran
źródło
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.

Haoming Zhang
źródło
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
thehme
źródło
2

W terminalu uruchom te polecenia

1)

$ sudo service mongod start

2)

 $ mongo
shijinmon Pallikal
źródło
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.

kta
źródło
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.
Zameer
źródło
1

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

use admin
db.shutdownServer()

Aby ponownie uruchomić:

sudo service mongod restart
WARSZAWA
źródło
1

Spróbuj:

sudo service mongod restart 
TBhavnani
źródło
0

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

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

Sumukh Bhandarkar
źródło
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ć.

Gireesh K.
źródło
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ł ............

Pushpender Singh
źródło
0

proste Run Two chwali

sudo rm /var/lib/mongodb/mongod.lock
sudo mongod --repair 
Shashwat Gupta
źródło
0

Wystąpił podobny błąd, ale główna przyczyna była inna. Po zainstalowaniu mongodb przy użyciu homebrew. https://docs.mongodb.com/manual/installation/ Muszę uruchomić usługę „mongod” przed wydaniem polecenia „mongo” na terminalu.

Shyambeer
źródło
0

Jeśli używasz systemów OS X, nie ma żadnych servicepoleceń. Więc nie będziesz w stanie wykonać sudo service mongod start.

Sprawdź tę odpowiedź https://unix.stackexchange.com/a/155746, aby uzyskać dodatkową pomoc!

Laura Corssac
źródło
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

Mohit Rakhade
źródło
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
Lord
źródło