Ответ 1
Попробуйте удалить /var/lib/mongodb/mongod.lock и перезапустить службу mongdo
sudo rm /var/lib/mongodb/mongod.lock
sudo service mongodb restart
Я не могу подключиться к MongoDB. В Ubuntu это работает, но сейчас я работаю в CentOS. Это сообщение об ошибке:
Версия оболочки MongoDB: 2.4.2
подключение к: test
Sat Apr 20 07: 22: 09.390 Ошибка выполнения JavaScript: Ошибка: не удалось подключиться к серверу 127.0.0.1:27017 в src/mongo/shell/mongo.js: L112
исключение: сбой подключения
Я попытался удалить файл mongod.lock
, но он не работает.
Попробуйте удалить /var/lib/mongodb/mongod.lock и перезапустить службу mongdo
sudo rm /var/lib/mongodb/mongod.lock
sudo service mongodb restart
Если вы используете Ubuntu, возникает проблема с правами на папку.
Запустите следующие команды:
Остановить службу MongoDB
sudo service mongodb stop
Удалите файл блокировки MongoDB
sudo rm /var/lib/mongodb/mongod.lock
Изменение права собственности с root на путь MongoDB
sudo chown -R mongodb:mongodb /var/lib/mongodb/
Запустите службу MongoDB
sudo service mongodb start
Протестируйте приложение mongo
mongo
Затем вы сможете успешно выполнить (надеюсь).
Этот метод работает только в том случае, если вы хотите восстановить файлы данных без сохранения исходных файлов. Чтобы найти, где находится dbpath, используйте
vim /etc/mongodb.conf
Проверить вариант dbpath=
.
(у меня есть dbpath=/var/lib/mongodb
.)
По умолчанию: /data/db/
Типичные местоположения включают /srv/mongodb
, /var/lib/mongodb
или /opt/mongodb
.
Замените /var/lib/mongodb на dbpath
sudo rm /var/lib/mongodb/mongod.lock
sudo mongod --dbpath /var/lib/mongodb/ --repair
sudo mongod --dbpath /var/lib/mongodb/ --journal
(Убедитесь, что вы оставили терминал, в котором вы выполняли указанные выше строки. Не нажимайте Ctrl + C или не выходите.) Введите команду, чтобы начать mongo
теперь в другом окне.
Я надеюсь, что это сработает для вас! Для тех, кто хочет восстановить ваши файлы данных при сохранении исходных файлов, см. mongo
восстановить.
У меня была такая же проблема в прошлом. В моем случае у меня было недостаточно свободного места для файлов журнала. Освобождение некоторого пространства решило проблему.
Я не знаю, почему ответ @lkrzysiak был опущен: он работал у меня! Недостаточное свободное пространство МОЖЕТ быть источником этой ошибки, которую я тоже получил, посмотрев журналы, которые я получил:
Mon Aug 12 17:02:59.159 [initandlisten] recover : no journal files present, no recovery needed
Mon Aug 12 17:02:59.159 [initandlisten]
Mon Aug 12 17:02:59.159 [initandlisten] ERROR: Insufficient free space for journal files
Mon Aug 12 17:02:59.159 [initandlisten] Please make at least 3379MB available in /var/lib/mongodb/journal or use --smallfiles
Mon Aug 12 17:02:59.159 [initandlisten]
Mon Aug 12 17:02:59.159 [initandlisten] exception in initAndListen: 15926 Insufficient free space for journals, terminating
Mon Aug 12 17:02:59.159 dbexit:
Mon Aug 12 17:02:59.159 [initandlisten] shutdown: going to close listening sockets...
После некоторой очистки, чтобы освободить место, он работал как шарм!
Я столкнулся с той же проблемой. За работой mongod внутри бункера (где у вас установлен ваш монгодб) работал у меня. У меня также было недостаточно места.
Вы также получите эту ошибку, если вы изменили порт по умолчанию для mongoDB в файле /etc/mongo.conf
Для подключения через оболочку в этом случае используйте: -
$mongo 127.0.0.1:your_new_port_number
ИЛИ
$mongo -u <user> -p <pass> --host <host> --port your_new_port_number
Это может быть комбинация проблемы $PATH и Permission.
Попробуйте выполнить следующие шаги:
Обновите переменную $PATH, чтобы указать файл bin MongoDB. В моем случае brew установите MongoDB в эту папку:
/usr/local/Cellar/mongodb/2.4.6/
Чтобы обновить переменную $PATH, выполните следующие действия:
$ sudo vi /etc/paths
Затем нажмите 'i, чтобы вставить текст в Vi и добавьте свой путь MongoDB в конец файла путей и перезапустите терминал.
/usr/local/Cellar/mongodb/2.4.6/bin
Используйте "Esc: w q для сохранения и выхода из редактора Vi.
Используйте эхо, чтобы отобразить вашу переменную пути:
$ echo $PATH
/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/Cellar/mongodb/2.4.6/bin
Теперь попробуйте проверить версию Mongo, если вы следуете, то вы на правильном пути!
$ mongo --version
MongoDB shell version: 2.4.6
Теперь нам нужно создать каталог базы данных. Я использовал местоположение "/data/db по умолчанию", предложенное в документах MongoDB. Я также создал каталог журналов, чтобы избежать любых разрешений, в то время как Mongo пытается создать любые журналы. Измените владельца и сделайте это.
$ sudo mkdir /data/db
$ sudo mkdir /data/log
$ whoami
username
$ chown -R username /data
Теперь мы создадим конфигурационный файл по умолчанию для MongoDB, который будет предоставлен в первый раз, когда мы запустим команду mongod. Теперь я также хотел бы отметить, что "mongod запустит сервис, который будет прослушивать входящие подключения к данным. Это похоже на запуск" $service mysqld start.Lets" и создание файла конфигурации. Имейте в виду, что я создал очень простой файл конфигурации. Тем не менее, вы можете добавить много других переменных для настройки MongoDB. Это первый раз, когда я играю с MongoDB, поэтому я просто знаю столько, сколько я читал в документах MongoDB! Я создал mongodb.conf.
$ sudo vi /etc/mongodb.conf
Добавьте следующее:
fork = true
port = 27017
quiet = true
dbpath = /data/db
logpath = /data/log/mongod.log
logappend = true
journal = true
Обратите внимание, что порт по умолчанию для сервера MongoDB - 27017. Используйте свой собственный путь для dbpath и logpath, который вы создали на шаге 5. Не забудьте закрыть и сохранить файл conf.
Теперь мы все настроены на запуск нашего сервиса MongoDB. Откройте два экземпляра Terminal.In Terminal 1, введите:
$ sudo mongod -f /etc/mongodb.conf
about to fork child process, waiting until server is ready for connections.
forked process: 3516
all output going to: /data/log/mongod.log
child process started successfully, parent exiting
Если вы получаете сообщение выше, то знайте, что вы успешно запустили службу Mongod.
Теперь, чтобы подключиться к нему, в терминале 2 введите следующее:
$mongo test
MongoDB shell version: 2.4.6
connecting to: test
Server has startup warnings:
Tue Sep 3 16:55:43.527 [initandlisten]
Tue Sep 3 16:55:43.527 [initandlisten] ** WARNING: soft rlimits too low. Number of files is 256, should be at least 1000
>
Игнорировать предупреждения, но вы успешно подключены к тестовой базе данных! Круто!
Это все. Я применил это решение, когда я впервые попытался установить копию MongoDB на моем Mac. Посмотрите, поможет ли вам это.
Для подробного сообщения вы можете перейти сюда - http://arcanebytes.com/2013/09/03/mongodb-installation-on-mac-os-x/#comment-1036112094.
Надеюсь, это поможет!
Cheers, Chinmay