Монго DB: не удалось подключиться на усадьбе Laravel - PullRequest
0 голосов
/ 03 июня 2019

Мне нужно создать новый проект Laravel и мне нужно использовать Mongo DB в качестве сервера базы данных. Следуя документации Homestead, я добавил это в свой Homeasted.yaml файл:

mongodb: true

Из того, что я вижу в логах, создана база данных mongo:

homestead-7: Running: script: Creating Mongo Database: homestead

Но после этого я получил это сообщение:

    homestead-7: Running: script: Creating Mongo Database: homestead
    homestead-7: MongoDB shell version v3.6.3
    homestead-7: connecting to: mongodb://127.0.0.1:27017/homestead
    homestead-7: 2019-06-03T10:01:52.103+0000 W NETWORK  [thread1] Failed to connect to 127.0.0.1:27017, in(checking socket for error after poll), reason: Connection refused
    homestead-7: 2019-06-03T10:01:52.104+0000 E QUERY    [thread1] Error: couldn't connect to server 127.0.0.1:27017, connection attempt failed :
    homestead-7: connect@src/mongo/shell/mongo.js:251:13
    homestead-7: @(connect):1:6
    homestead-7: exception: connect failed
The SSH command responded with a non-zero exit status.

Из того, что я нашел в интернете, может быть, что служба монго не запущена. Я перезапустил коробку без подготовки на этот раз, но с тем же результатом. Команда:

vagrant@homestead:~$ mongo

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

Есть идеи, как это исправить? Заранее спасибо!

Версия Laravel: 5.8. Усадьба: 8.4.0 Оболочка MongoDB: v3.6.3

ПОСЛЕДНЕЕ РЕДАКТИРОВАНИЕ

После запуска виртуальной машины я выполнил следующую команду:

sudo apt-get install mongodb

После установки я могу выполнить команду " mongo ":

MongoDB shell version v3.6.3
connecting to: mongodb://127.0.0.1:27017
MongoDB server version: 3.6.3
Welcome to the MongoDB shell.
For interactive help, type "help".
For more comprehensive documentation, see
        http://docs.mongodb.org/
Questions? Try the support group
        http://groups.google.com/group/mongodb-use

Странно, так на самом деле Mongo DB не установлена ​​?! Даже если бы я добавил флаг. Теперь мне нужно понять, как добавлять его каждый раз при запуске виртуальной машины.

1 Ответ

0 голосов
/ 05 июня 2019

Мне удалось исправить мою проблему после нескольких часов поиска, поэтому я опубликую это исправление. Поскольку я не нашел ничего, что могло бы мне помочь, я начал проверять сценарии Homestead, чтобы понять, как установлен Mongo, и в homestead.rb я нашел следующую строку:

# Install MongoDB If Necessary
if settings.has_key?('mongodb') && settings['mongodb']
  config.vm.provision 'shell' do |s|
    s.name = 'Installing MongoDb'
    s.path = script_dir + '/install-mongo.sh'
  end
end

Итак, я искал, где " install-mongo.sh " вызывается, и я нашел это условие:

if [ -f /home/vagrant/.mongo ]
then
    echo "MongoDB already installed."
    exit 0
fi

Таким образом, БД Mongo не устанавливается каждый раз, только если файл "/home/vagrant/.mongo" не существует. В этот момент я понял, что возможно Mongo не удалось установить, но этот файл был написан.

Таким образом, решение состояло в том, чтобы уничтожить коробку Vagrant и воссоздать ее с нуля:

vagrant destroy
vagrant up --provision
...