Не вдалося підключитися до сервера 127.0.0.1:27017


160

Я отримую таку помилку:

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

Ось що відбувається, коли я намагаюся запустити mongodb:

* Starting database mongodb                                             [fail]

Я вже пробував mongo --repair

Я зробив chown та chmod для var, lib та data / db та mongodb.

Не впевнений, що ще робити. Будь-які пропозиції?

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

Редагувати:

Я зняв замок, потім здійснив ремонт mongod і отримав цю помилку:

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

тому я зробив це з судо:

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

Але все-таки виникає та сама проблема.


1
Я думаю, що це посилання допоможе вам stackoverflow.com/questions/9647561/… , змінивши db шлях монго
Med7at

8
sudo service mongod restartпрацював на мене
Судіп Бхандарі

Відповіді:


31

Журнал вказує, що mongodb закінчується, оскільки є старий файл блокування.

Якщо ви ще не працювали з журналом, видаліть файл блокування, запустіть ремонт та запустіть mongodb знову.

Якщо ви працювали або працювали з увімкненим журналом, перегляньте відповідні документи DB DB . Зауважте, що вони говорять: "Якщо ви працюєте з Журналом, вам не слід робити ремонт, щоб відновитись до постійного стану". Тож якщо ви вели журнал, ремонт, можливо, погіршив ситуацію.


25
Це погано, що ремонт може пошкодити речі!
UpTheCreek

1
Що стосується журналу з можливістю ситуації, що робити, якщо я отримую з'єднання, відхилено помилку дуже часто?
Шашанк

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
привіт Нанхе Кумнар, що є початковим шляхом в терміналі. Чи варто нам перейти в папку cd / usr / local / opt / mongodb / або іншу, я зіткнувся з такою проблемою Vijayvir-Singh: ~ vijayvir $ sudo rm /var/lib/mongodb/mongod.lock rm: / var / lib /mongodb/mongod.lock: Немає такого файлу чи каталогу Vijayvir-Singh: ~ vijayvir $
Vijayvir Sing Pantlia

@vvss спочатку знайдіть шлях до файлу. використовуй це. знайти mongod.lock
Kumar

9
У версії 2.4.8 це /data/db/mongod.lockзамість/var/lib/mongodb/mongod.lock
Loolooii

84

Ви бігали mongodперед бігом mongo?

Я дотримувався інструкцій щодо установки mongodb з http://docs.mongodb.org/manual/tutorial/install-mongodb-on-os-x/ і у мене була та сама помилка, що і ви, лише коли я запускався mongoдо того, як насправді запустив процес mongo з mongod. Я думав, що встановлення mongodb також запустить його, але вам потрібно запустити його вручну, mongodперш ніж робити щось інше, що потребує mongodb.


10
Це було моє питання. Я здивований, що в документах "Початок роботи з Монго" не було чітко випереджено.
jononomo

Це дійсно не має сенсу з точки зору користувацького досвіду. mongo.exeмає бути тим, хто запускає БД.
Моше Кармель

58

Це тому, що процес mongod знижений, ви повинні запустити команди внизу, щоб піднятися на процес 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

Сподіваюся, це вам допоможе.


2
Проблема вирішена. Дякую. Я додав би команди sudo service mongod stopта sudo service mongodb stopперед першою командою, тому що деякі люди все ще можуть працювати.
Георгій Георгієв

1
Це допомогло мені перезапустити монго. однак я більше не маю доступу до старої бази даних. Не могли б ви допомогти мені тут.
Ехсан

13

Спробуйте

sudo service mongodb start

Це вирішило моє питання.


Яка різниця між sudo service mongod startіsudo service mongodb start
geckob

Я не дуже впевнений, але здогадуюсь mongodb - це ім'я служби, а mongod - це ім'я файлу програми.
潘博韜

7

Перевірте у вашій файловій системі вільний простір та збільште її, якщо її менше. Це також може спричинити запуск монго. Перевірте файл /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

Це сталося зі мною, і я додав smallfiles = true у файл /etc/mongod.conf
Carlos

7

Спробуйте запустити mongodраніше mongo.

sudo /usr/sbin/mongod на моєму відкритому використанні

Це вирішило мою проблему,


6

тому спочатку потрібно видалити файл mongod.lock командою нижче

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

а потім перезапустіть службу mongo, видавши команду нижче

sudo service mongod restart 

4

Можна перевірити, netstat -anp | grep 27017чи використовується порт іншим процесом.


дивно, я зрозумів це: alex @ alex-K43U: ~ $ netstat -anp | grep 27017 (Не всі процеси можуть бути ідентифіковані, інформація про процес, що не належить, не відображатиметься. Вам потрібно буде мати root, щоб побачити все це)
alexchenco

2
Це нормальний результат при виконанні як некорінного користувача, оскільки netstat показуватиме лише ті процеси, яким користувач може бачити.
Ефрен

ви можете використовувати sudo netstat -anp | grep 27017, щоб пройти це попередження
Wiston Coronell

Цей для мене працює, спасибі велике. Це я отримую, коли запустив заданий код unix 2 [] STREAM 31095 - /tmp/mongodb-27017.sock, і я видалив файл .sock, тепер усе добре.
Авель

4

У Windows працює cmd як адміністратор:

  1. Створити каталог:

    mkdir c: \ mongo \ data \ db

  2. Установка служби:

    mongod.exe --встановити --logpath c: \ mongo \ logs --logappend --bind_ip 127.0.0.1 --dbpath c: \ mongo \ data \ db --directoryperdb

  3. Запустіть MongoDB:

    чистий старт MongoDB

4.Запустіть панцир Монго:

c:\mongo\bin\mongo.exe

Це рішення добре працює для мене



3

Для подальшого ознайомлення виконайте ці дії, щоб уникнути подібних помилок:

1.Завантажте MondoDB https://www.mongodb.com/

2. Відкрийте термінал і введіть компакт-диск у папку для завантаження або будь-яку папку, яку ви зберегли для завантаження mondodb.

cd Downloads

3. Перемістіть mongodb на ваш usr / local шлях

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

4.cd у вашу локальну папку

cd /usr/local/mongodb

5.створити новий каталог

sudo mkdir -p /data/db

6.cd у новий каталог, щойно створений вище

cd /data/db

7. пробачте дозволу монго

sudo chown YourMacUserName /data/db

8. Потім перейдіть / відкрийте свій .bash_profile

Для цього виконайте наступні дії:

У вашому новому терміналі

1 . cd 2 .pwd 3 .ls -l

Перевірте, чи .bash_profile відображається у вашому списку файлів вашого терміналу

якщо не створити -bash_profile

Створення .bash_profile:

У своєму терміналі

торкніться .bash_profile

// пропустіть цей крок, якщо у вас вже є .bash_profile

Крок 8:

Далі у своєму терміналі:

open .bash_profile

І у ваш файл bash, що відкриється, додайте наступне:

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

А потім збережіть . (Збереження файлу або команда S / CMD + S)

Крок 9: поверніться у свій термінал :

source .bash_profile

Тепер відкрийте два термінали. Один буде для вашого демона, а другий - для вашого монго .

Термінал 1: у вашому терміналі: mongod

mongodb

Вихід: Термінал Монгод

Термінал 2:

mongo

Вихід: Термінал Монго

Також не забудьте зробити наступну помилку друку під час запуску монгоду у своєму терміналі: Це неправильно

mongo d

видає таку помилку : Не вдалося підключитися до 127.0.0.1:27017, в (перевірка сокета на помилку після опитування), причина: Підключення відмовлено

Це вірно:

mongod

(Між словами "монго" і "д. Мондод" не повинно бути місця

Нарешті, завжди майте на увазі, що вам доведеться запускати mondod, перш ніж запускати монго на своїх терміналах .


2

Я стежив за док. На http://docs.mongodb.org/manual/tutorial/install-mongodb-on-red-hat/ .

Після налаштування та перезавантаження я виконав sudo service mongod startі отримав ... [FAILED].

Нарешті я виявив, що mongodпочалося. Я думаю, що yum installдодав це до автоматичного запуску.

Для того, щоб перевірити , якщо ваш mongodпрацює: service mongod status.

Сподіваюсь, це може допомогти комусь із подібними проблемами.


2

Після частої спроби нарешті мені вдалося усунути проблему ...

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

2

Ця помилка може бути спричинена параметром прив'язки IP-адреси MongoDB. Ви можете перевірити файл конфігурації MongoDB за допомогою

$ sudo vi /etc/mongodb.conf

У моєму випадку прив'язуючий IP встановлюється до інтрамережної адреси сервера так само:

bind_ip = 10.10.1.14 
#port = 27017

Тому я маю надати mongo IP-параметр для підключення до оболонки за типом:

$ mongo 10.10.1.14

Не забудьте перезапустити службу mongodb, якщо ви змінили конфігурацію.


2

Я монго версії 3.2.1 і мені довелося видалити файл блокування з /data/db/і після цього, запустився mongodі він почався успішно.

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


1

Після видалення mongod.lock, який знаходився всередині каталогу даних у моїй ОС Windows, воно все ще показувало те саме повідомлення про помилку. Мені довелося запускати mongod з --dbpath, щоб команда mongo запускалася без помилок.


1

Хоча відповіді отримано, я хотів би поговорити про помилки в мережі в MongoDB.

Помилки мережі MongoDB

Встановлення проблем безпечного запису - це не повний метод підтвердження, щоб переконатися, що ми в безпеці. Припустимо, що w=1& j=trueвстановлено, що робити, якщо підтвердження запису не отримано від сервера? Ну, ймовірність, що це не сталося, але це могло статися. Причина, чому це могло статися, полягає в тому, що є мережеві помилки - є причини, через які ми можемо не отримати позитивної відповіді. Отже, ми можемо надіслати запит із програми через драйвер мови вибору.mongodможе завершити його успішно, і тоді може відбутися скидання TCP, і мережа насправді може отримати скидання таким чином, що ми ніколи не отримуємо відповіді. Отже, ми можемо отримати помилку, а за помилкою ми можемо припустити, що ми отримали помилку. Це не сталося, але може статися.

Для вставки можна захистити її. Це можливо, тому що якщо ми дозволимо драйверу створити _idі ми зробимо вставку - тоді ми могли б зробити це вставлення кілька разів, і це було б шкодою. Тому що, якщо ми зробимо це 1- й раз, і ми отримаємо помилку, і ми не впевнені, чи виконана вставка чи ні, оскільки це помилка в мережі, то ми можемо це зробити ще раз. І за умови, що ми виконаємо його знову, тир, щоб виконати його з точним_id . Найгірший випадок - ми отримаємо дублюючу помилку ключа при спробі вставити її.

Однак оновлення - це те, де виникає проблема. Тим більше, оновлення, яке не є позитивним елементом, яке, наприклад, включає a$ink команду. Отже, ми кажемо базі даних збільшити певне поле. У такому випадку, якщо ми отримаємо помилку в мережі і не знаємо, відбулося чи ні оновлення. Тепер, можливо, ми знаємо достатньо про значення, які ми можемо перевірити з ними, чи відбулося оновлення, що добре. Але якщо ми не знаємо початкового значення в базі даних для цього поля, тоді ми не можемо знати, сталося це чи ні у випадку помилки мережі. Цей вид питань є надзвичайно рідкісним із тонкою мережею.

І якщо нам дійсно потрібно уникнути його будь-якою ціною, то нам потрібно ввімкнути всі наші оновлення у вкладиші, прочитавши повне значення документа з бази даних, а потім потенційно видалити його та вставити його знову або просто вставити новий.

Причини, через які програма може отримати помилку, навіть якщо запис було успішним:

  • Мережеве з’єднання TCP між програмою та сервером було скинуто після того, як сервер отримав запис, але перш ніж відповідь могла бути надіслана.
  • MongoDBСервер припиняє між отриманням записи і відповіді на нього.
  • Мережа виходить з ладу між часом запису та часом, коли клієнт отримує відповідь на запис.

1

Це працює для мене, щоб зупинити використання mongodb:

use admin
db.shutdownServer()

І перезапустити:

sudo service mongod restart


0

Додавання сміття в PATH у змінні середовища допомогло.

GOTO Встановлення Шлях та скопіюйте ../bin до змінних PATH у змінних середовища у Windows


0

введіть windows + r і введіть наступне

послуги.msc

запустити MongoDB

тепер наберіть "mongo" в cmd у відповідному шляху, де присутній mongo.exe, воно почне працювати.


0

1.Створіть нову папку на d-диску D: / data / db

2. Відкрийте термінал на D: / data / db

3.Введіть mongod і введіть.

4.Введіть монго і введіть.

і ваш mongodb просяк ............




0

Я отримав подібну помилку, але першопричина була іншою. Після встановлення mongodb використовуйте домашню мову. https://docs.mongodb.com/manual/installation/ Я повинен запустити послугу "mongod", перш ніж дати команду "mongo" на терміналі.



0

Помилка: не вдалося підключитися до сервера 127.0.0.1:27017

Це рішення для користувачів WINDOWS введіть тут код 1. Створіть каталог:

mkdir c:\mongo\data\db
  1. Встановіть сервіс: спочатку перейдіть до свого каталогу бін у файлах програм MongoDB з CD

mongod.exe --install --logpath

  1. Запустіть MongoDB:

    net start MongoDB

4.Запустіть панцир Монго:

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

переходити до бін та входити mongo

Примітка: Відкрийте термінал в режимі адміністратора


0

Ubuntu 18.04LTS: Проблема виникає, коли я повністю видалив попередню версію та встановив 4.2.6

Після годин гуглінгу я вирішив ще одну проблему

MongoDB Не вдалося запустити - *** перервав після відмови fassert ()

Я був безнадійний щодо проблеми, яку не вдалося підключити до сервера , тому що все здається нормальним.

Нарешті, я вирішив перезапустити операційну систему і здогадатися, що ... BINGO

sudo mongo // works like a charm
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.