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 в своей домашней среде, внутри контейнера.