SQLSTATE[HY000] [2002] Команды Drush не работают - DDEV vanilla Drupal 8 install

Я только что создал новую установку Drupal 8, используя ddev, но у меня проблемы с drush. Всякий раз, когда я запускаю команду drush cr возвращает ошибку:

 [error]  SQLSTATE[HY000] [2002] php_network_getaddresses: getaddrinfo failed: nodename nor servname provided, or not known

Если я запускаю команду drush en admin_toolbar с --debug флаг возвращает ошибку:

Executing: mysql --defaults-file=/private/tmp/drush_ty1hL4 --database=db --host=db --port=3306 --silent < /private/tmp/drush_OSFtCb ERROR 2005 (HY000): Unknown MySQL server host 'db' (0)

[Symfony\Component\Console\Exception\CommandNotFoundException] Command pm:enable was not found. Drush was unable to query the database.

Единственные решения, которые мне удалось найти в отношении этой проблемы, менялись host в settings.php из localhost в 127.0.0.1 но так как файл settings.php был сгенерирован ddev во время настройки, host на самом деле db и изменение его на что-либо вызывает поломку сайта.

1 ответ

Решение

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

ddev ssh а также drush crили жеddev exec drush cr

По сути, слишком сложно запустить drush на вашем хосте, потому что у него недостаточно контекста для запуска. Вы можете получить установленный на хосте drush для запуска нескольких команд (например, drush sql-cli используя ddev describe получить порт контейнера MySQL и drush --db-url=mysqli://db:db@127.0.0.1:32782/db sql-cli (Это не сработает, 32782 - это порт db контейнера db в моем проекте.)

Может быть, эксперт по Drush может помочь нам, но я рекомендую запускать Drush в своей домашней среде, внутри контейнера.

Другие вопросы по тегам