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

127

Я получаю следующую ошибку:

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 и log 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

EDIT:

Я удалил блокировку, затем восстановил 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

поэтому я сделал это с помощью 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

Но все-таки с той же проблемой.

  • 1
    Я думаю, что эта ссылка поможет вам stackoverflow.com/questions/9647561/… путем изменения пути БД Монго
  • 2
    у меня работал sudo service mongod restart
Теги:

24 ответа

27
Лучший ответ

Журнал показывает, что mongodb завершается, потому что есть старый файл блокировки.

Если вы не работаете и не работаете с журналированием, удалите файл блокировки, запустите восстановление и снова запустите mongodb.

Если вы используете или выполняете ведение журнала, см. соответствующие документы Mongo DB. Обратите внимание, что они говорят: "Если вы работаете с журналом, вы не должны делать ремонт, чтобы восстановить согласованное состояние". Поэтому, если вы ведете ведение журнала, ремонт может ухудшить ситуацию.

  • 22
    Это плохо, что ремонт может повредить вещи!
  • 1
    В ситуации с включенным ведением журнала, что делать, если я получаю сообщение об ошибке «Отказано в соединении» очень часто?
134
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 
  • 0
    привет Nanhe Kumnar, что является начальным путем в терминале. Должны ли мы перейти к папке cd / usr / local / opt / mongodb / или другой, я столкнулся со следующей проблемой Виджайвир-Сингх: ~ Виджайвир $ sudo rm /var/lib/mongodb/mongod.lock rm: / var / lib /mongodb/mongod.lock: Нет такого файла или каталога Виджайвир-Сингх: ~ Виджайвир $
  • 0
    @vvss сначала найдите путь к файлу. использовать этот. найти mongod.lock
Показать ещё 2 комментария
80

Запустили ли вы mongod перед запуском mongo?

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

  • 9
    Это была моя проблема. Я удивлен, что в документах «Начало работы с Mongo» это не ясно.
  • 0
    Это действительно не имеет смысла с точки зрения пользовательского опыта. mongo.exe быть mongo.exe .
36

Это потому, что 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

Надеюсь, это поможет вам.

  • 1
    Задача решена. Спасибо. Я бы добавил команды sudo service mongod stop и sudo service mongodb stop перед первой командой, потому что некоторые люди все еще могут их запускать.
  • 0
    отлично спасибо
Показать ещё 1 комментарий
12

Try

sudo service mongodb start

Это решило мою проблему.

  • 0
    В чем разница между sudo service mongod start и sudo service mongodb start
  • 0
    Я не уверен, но думаю, что mongodb - это имя службы, а mongod - имя файла программы.
7

Попробуйте запустить mongod до mongo.

sudo /usr/sbin/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
  • 0
    Это случилось со мной, и я добавил smallfiles = true в файл /etc/mongod.conf
6

так что сначала вы должны удалить файл mongod.lock по команде

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

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

sudo service mongod restart 
4

С помощью netstat -anp | grep 27017 вы можете проверить, используется ли порт другим процессом.

  • 0
    странно, я получил это: alex @ alex-K43U: ~ $ netstat -anp | grep 27017 (Не все процессы могут быть идентифицированы, информация о не принадлежащих процессах не будет показана, вам нужно быть пользователем root, чтобы увидеть все это.)
  • 2
    Это нормальный результат при работе от имени пользователя без полномочий root, поскольку netstat будет показывать только процессы, которые разрешено видеть вашему пользователю.
Показать ещё 2 комментария
3

Для дальнейшего использования выполните следующие действия, чтобы избежать подобных ошибок:

1. Загрузите MondoDB https://www.mongodb.com/

2. Откройте терминал и перейдите в папку загрузок или в любую папку, в которую вы сохранили загрузку mondodb (убедитесь, что вы распаковали папку mongodb перед тем, как перейти в нее)

cd Downloads

3. Переместите mongodb на ваш usr/локальный путь

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

Step8:

Далее в вашем терминале:

open .bash_profile

И в открывшемся bash файле добавьте следующее:

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

А затем сохраните. (Файл Сохранить или команда S/CMD + S)

Шаг 9: вернитесь в свой терминал:

source .bash_profile

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

Терминал 1: в вашем терминале тип: mongod

mongodb

Выход: Изображение 4662

Терминал 2:

mongo

Выход: Изображение 4663

Также убедитесь, что вы не допустили следующую ошибку при запуске mongod в терминале: это неверно

mongo d

выдает следующую ошибку: Не удалось подключиться к 127.0.0.1:27017, в (проверка сокета на наличие ошибок после опроса), причина: соединение отказано

Это правильно:

mongod

(Между словами монго и д..мондод не должно быть пробела

Наконец, всегда имейте в виду, что вы должны запустить mondod, прежде чем запускать Монго на своих терминалах.

3

В windows run cmd as Admin:

  • Создать каталог:

    mkdir c:\mongo\data\db

  • Установить службу:

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

  • Запустите MongoDB:

    net start MongoDB

4.Start Mongo Shell:

c:\mongo\bin\mongo.exe

Это решение отлично работает для меня

3

Это сработало для меня:

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

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

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

Эта ошибка может быть вызвана установкой привязки 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

Я следовал за документом 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
1

Это работает для меня, чтобы остановить использование mongodb:

use admin
db.shutdownServer()

И перезапустить:

sudo service mongod restart
1

Хотя ответы получены, я хотел бы обсудить ошибки сети в MongoDB.

Network errors MongoDB

Настройка безопасных проблем с записью - не полный метод доказательства, чтобы убедиться, что мы в безопасности. Предположим, что w=1 и j=true установлены, что, если подтверждение записи не было получено с сервера? Ну, скорее всего, этого не произошло, но могло случиться. Причина, по которой это могло произойти, состоит в том, что есть сетевые ошибки - есть причины, по которым мы не можем получить утвердительный ответ. Таким образом, мы можем отправить запрос из приложения через драйвер выбранного языка. mongod может завершить его успешно, а затем может быть TCP reset, и сеть действительно может получить reset таким образом, чтобы мы никогда не получали ответ. Таким образом, мы могли бы получить ошибку и ошибку, мы можем предположить, что мы получили ошибку. Этого не произошло, но это может произойти.

Для вставки можно защитить его. Это возможно, потому что, если мы позволим водителю создать _id, и мы сделаем вставку - тогда мы могли бы сделать это вставить несколько раз, и это нанесет какой-либо вред. Потому что, если мы делаем это 1 st и мы получаем ошибку, и мы не уверены, завершена ли эта вставка, потому что это сетевая ошибка, тогда мы могли бы просто сделать это снова. И если мы выполним его снова, tyr выполнит его с точным _id. В худшем случае мы получим двойную ключевую ошибку, когда мы попытаемся ее вставить.

Однако обновление происходит там, где возникает проблема. В частности, обновление, которое не является значимым элементом, например, включало команду $ink. Итак, мы сообщаем базе данных, чтобы увеличить определенное поле. В этом случае, если мы получим сетевую ошибку, и мы не знаем, произошло ли обновление. Теперь, может быть, мы достаточно знаем о значениях, которые мы можем проверить с ними, что произошло обновление, и это нормально. Но если мы не знаем начальное значение в базе данных для этого поля, нам не представляется возможным узнать, произошло ли это или нет в случае сетевой ошибки. Такие проблемы крайне редко встречаются в тонкой сети.

И если нам действительно нужно избегать этого любой ценой, нам нужно сделать все наши обновления в вставках, читая полное значение документа из базы данных, а затем потенциально удаляя его и вставляя снова или просто вставить новый.

Причины, по которым приложение может получить ошибку, даже если запись была успешной:

  • Сетевое TCP-соединение между приложением и сервером было reset после того, как сервер получил запись, но до отправки ответа.
  • Сервер MongoDB завершается между получением записи и ответом на нее.
  • Сеть не работает между временем записи и временем, когда клиент получает ответ на запись.
1

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

0

Просто запустите mongod --repair из C:\Program Files\MongoDB\Server\4.0\bin

Вот документ https://docs.mongodb.com/manual/tutorial/recover-data-following-unexpected-shutdown/

0

1. Создайте новую папку на диске D: /data/db

2. Откройте терминал на D: /data/db

3.Введите mongod и введите.

4.Введите Монго и введите.

и твой mongodb стратировал............

0

введите окна + r и введите следующие

services.msc

запустите MongoDB

теперь введите "mongo" в cmd в соответствующем пути, где присутствует mongo.exe, он начнет работать.

0

Thu Oct 11 12:05:42 [initandlisten] Невозможно проверить файлы журнала из-за: boost:: filesystem: : basic_directory_iterator constructor: Нет такого файла или каталога: "/data/db/journal" Чт 11 окт 12:05:42 [initandlisten] закончил проверку dbs

В этой строке нет такого файла или каталога , поэтому создайте папку /data/db на root, тогда попробуйте "mongod" , надеюсь, что это сработает

0

Добавление бина в PATH в переменных среды помогло.

Путь установки GOTO и скопируйте файл.. /bin в переменные PATH в переменных среды в Windows

Ещё вопросы

Сообщество Overcoder
Наверх
Меню