Отказ в соединении MongoDb - PullRequest
19 голосов
/ 28 июня 2011

Это моя первая попытка использовать MongoDB.У меня работает Mongo:

ps -ef | grep [m]ongo
mongodb  11023  1  0 Jun24 ? 00:00:03 /usr/lib/mongodb/mongod --config /etc/mongodb.conf

И ошибка возникает в результате выполнения

Datastore.save( stuff );  // (pseudo code)

Ошибка:

Jun 27, 2011 3:20:29 PM com.mongodb.DBTCPConnector fetchMaxBsonObjectSize
WARNING: Exception determining maxBSON size using0
java.io.IOException: couldn't connect to [russ-elite-book/127.0.1.1:27017] bc:java.net.ConnectException: Connection refused
    at com.mongodb.DBPort._open(DBPort.java:206)
    at com.mongodb.DBPort.go(DBPort.java:94)
    at com.mongodb.DBPort.go(DBPort.java:75)
    at com.mongodb.DBPort.findOne(DBPort.java:129)
    at com.mongodb.DBPort.runCommand(DBPort.java:138)
    ...

Обратите внимание, что я использую 127.0.0.1: 27017 для моего соединения, которое работает с оболочкой Mongo.Кроме того, я получаю страницу администратора в браузере, используя http://localhost:28017.

Profuse спасибо за любые идеи!

Ответы [ 9 ]

13 голосов
/ 16 октября 2012

Я столкнулся с той же проблемой, потому что я обновил монго, используя brew.Чтобы исправить эту проблему.Найдите файл conf (который может не находиться в каталоге bin, откуда вы запускаете mongodb)

/ usr / local / Cellar / mongodb-2.2.whwhat / mongod.conf и закомментируйте "свойство bind_ip ".

9 голосов
/ 28 июня 2011

(Я думаю, что это немного плохая форма, чтобы ответить на свой собственный вопрос, но на самом деле, ответ оказывается ни один из предложенных. Тем не менее, я выражаю глубокую благодарность всем им. При ответе на вопрос нужно могу предположить, что он основан на правильно установленном и работающем программном обеспечении. У меня его не было.)

Я установил MongoDB с помощью Ubuntu Software Center. Он работал как из оболочки, так и из браузера, как отмечалось в другом месте этого вопроса. Однако это не сработало ни с Java (ни с Django).

Проблема, несмотря на то, что сказано в трассировке стека Java, заключалась в простом «соединении отказано».

Решение состоит в том, чтобы установить его из надлежащих источников Mongo и не доверять хранилищу Ubuntu.

(Да, это также часто случается с другими продуктами, полученными оттуда, такими как Eclipse, но вы знаете, что это такой хороший сервис, что вы хотите ему доверять.)

Если вы хотите прочитать, как я установил то, что потом работало, посмотрите http://www.javahotchocolate.com/tutorials/mongodb.html.

7 голосов
/ 28 июня 2011

Скорее всего, драйвер Java не может подключиться к указанному адресу. Убедитесь, что вы можете подключиться к этому адресу 127.0.1.1:27017 с помощью оболочки и запустить «db.isMaster()». Может быть, это проблема 127.0.1.1 против 127.0.0.1.

6 голосов
/ 04 апреля 2012

У меня была такая же проблема, но мое решение было другим.Я использовал «localhost» в качестве имени хоста и изменил его на «127.0.0.1», исправил его.

4 голосов
/ 05 ноября 2015

Я столкнулся с той же проблемой, потому что установил монго с помощью apt-get. Вот как это исправить:

  1. Найдите файл mongod.conf. В Ubuntu 14.04 это /etc/mongod.conf
  2. Откройте файл mongod.conf и введите команду bindIp = 127.0.0.1
  3. Перезапустить Mongod
3 голосов
/ 04 июля 2012

Оказывается, это проблема с драйвером Java MongDB .

Есть два решения:

  1. Использование версии 2.8 или выше драйвера Java.
  2. Отредактируйте файлы конфигурации и, если они содержат строку bind_ip = 127.0.0.1 или bind_ip = localhost, закомментируйте ее.

Еда скромного пирога ...

Как я показал в своем комментарии к собственный ответ Расса Бейтмана , сначала это казалось проблемой с пакетом Ubuntu. Настоящая причина в том, что файл конфигурации, который идет с ним, определяет значение для bind_ip ...

2 голосов
/ 28 июня 2011

Трудно сказать, не видя содержимого файла .conf.Я бы порекомендовал запустить оболочку mongo и посмотреть, сможете ли вы подключиться, запросить и написать с нее.Это поможет изолировать проблему сервера и Java-клиента.Кроме того, это может дать вам другую форму ошибки, которая может быть подсказкой.

Вы устанавливаете --port в своем файле .conf?

2 голосов
/ 28 июня 2011

Похоже, что это проблема безопасности или неверный URL.Если вы использовали конфигурацию по умолчанию, вы сможете получить доступ к http://yourmachine:28017. Проверьте, можете ли вы перейти на страницу администратора по этому URL.Если вы можете перейти к URL-адресу администратора, просто замените номер порта на 27017 в своем приложении.Это должно работать.

0 голосов
/ 14 ноября 2017

Для меня это было совершенно другое решение.Я использую Spring MVC Framework, и все, что мне нужно было сделать, это подтвердить, что файлы конфигурации XML говорят то же самое в папке / target, а также в нецелевых папках.Как только это было настроено, все работало.Проблема заключалась в том, что все работало при запуске с STS, но при развертывании у меня была упомянутая ошибка.

...