Я пытался использовать Mongoid с Rails на Ubuntu. Mongodb отлично работал у меня с приложениями rails от 3.0 до 3.2.
Сегодня неожиданно получаю сообщение об ошибке:
/home/pravinmishra/.rvm/gems/ruby-1.9.2-p318/gems/mongo-1.5.2/lib/mongo/connection.rb:413:in `connect ': не удалось подключиться к главному узлу на localhost : 27017 (Mongo :: ConnectionFailure)
Я много раз сталкивался с этой проблемой, и следующие команды у меня работали:
sudo rm /var/lib/mongodb/mongod.lock
sudo -u mongodb mongod -f /etc/mongodb.conf --repair
sudo start mongodb
sudo status mongodb
Когда я подключаюсь с терминала Ubuntu с помощью mongo, я получаю эту ошибку:
Версия оболочки MongoDB: 2.0.1 подключение к: test понедельник, 9 июля, 22:47:06 Ошибка: не удалось подключиться к серверу 127.0.0.1 shell / mongo.js: 84 исключение: сбой подключения
Любое предложение будет оценено.
Возможно, ваш экземпляр mongodb неожиданно завершил работу, и у вас устаревшие блокировки и база данных в несогласованном состоянии.
Как вы уже догадались, запустите mongoDB с --repair
флаг, но после этого вам нужно перезапустить его снова без него.
Также убедитесь, что все процессы действительно завершены, иначе вы не сможете привязать сервер к тому же порту. Я бы рекомендовал выполнить netstat -tulnp
и дважды проверьте, не прослушивает ли порт 27017 ничего.
Основываясь на вашем комментарии о старой ошибке файла блокировки, у вас либо уже запущен mongod, и вы пытаетесь подключиться к неправильному порту, либо у вас есть случай нечистого завершения ранее запущенного процесса mongod, и вам нужно удалить файл блокировки и перезапустите (возможно, с восстановлением в зависимости от характера нечистого завершения работы).
Если это произойдет снова, обязательно убедитесь, что вы работаете с включенным журналированием (по умолчанию в 2.0), тогда ремонт не потребуется.
Возможно, вы не сможете подключиться к локальному хосту по умолчанию: 27017, поскольку предыдущий экземпляр должен был завершиться неправильно из-за ошибок, исключений или блокировок. Пожалуйста, попробуйте убить предыдущие процессы, а затем снова запустить.