Я установил Drush впервые (так что это может быть ошибкой конфигурации), и я пытаюсь обновить его до последней версии ядра Drupal.
Drush дает мне эту ошибку - я на OSX box.
dev5:clientnamedirectory my.name$ drush pm-update projects drupal-7.25
<h1>Additional uncaught exception thrown while handling exception.</h1>
<h2>Original</h2><p>PDOException: SQLSTATE[HY000] [2002] No such file or directory in drupal_get_installed_schema_version() (line 155 of /Users/my.name/Sites/proface/includes/install.inc).</p>
<h2>Additional</h2>
<p>PDOException: SQLSTATE[HY000] [2002] No such file or directory in system_list() (line 165 of /Users/my.name/Sites/clientnamedirectory/includes/module.inc).</p><hr />
Drush command terminated abnormally due to an unrecoverable error.
Ответы:
Вот как я решил это на macOS:
Источник: Работа с Drush на Mamp .
источник
В конфигурации базы данных в файле settings.php для сайта Drupal попробуйте изменить хост на 127.0.0.1 вместо localhost.
замените значение по умолчанию: 'host' => 'localhost',
с: 'host' => '127.0.0.1',
Я имел эту ошибку на OS X XAMPP, но решение должно применяться и здесь. Как упоминал Клайв, это проблема с подключением к MySQL. Этот пост имеет больше по основной проблеме.
источник
объяснение
PDOException - ошибка 2002 означает , что ваш Drush не может подключиться к локальному серверу баз данных MySQL через файл сокета (например
/tmp/mysql.sock
) в соответствии с настройками в вашемphp.ini
.На самом деле это не очень связано с
drush
самим собой, это ваша конфигурация PHP, и эту ошибку можно воспроизвести:Fix
Если ваш MySQL работает правильно, убедитесь, что эти два файла:
mysql_config --socket
или:
mysqladmin variables | grep socket
php -i | grep -w default_socket
или:
php -r 'phpinfo();' | grep -w default_socket
соответствие и указывает на один и тот же файл, и они оба существуют.
Если нет, проверьте, какой из них правильный:
затем устраните проблему одним из следующих способов:
сделайте символическую ссылку, указывающую на рабочий
mysql.sock
сокет unix (для MAMP см. ответ Эндрю ),например, если вы используете MAMP, вы можете сделать символическую ссылку на местоположение по умолчанию:
правильный путь
pdo_mysql.default_socket
,mysql.default_socket
илиmysqli.default_socket
в вашемphp.ini
укажите
unix_socket
вsettings.php
вашей$databases
переменной, напримерИсправление проблем
Другие крайние случаи могут быть:
Отладка с помощью XDebug:
echo '<?php xdebug_start_trace("/tmp/foo.log");' > init.php
drush -c init.php ev 'Database::getConnection("default", "default");'
xdebug.show_exception_trace=1
в вашемxdebug.ini
sudo dtruss -fn mysqld
, на Linux сstrace
источник
Я использую MAMP Pro, и у меня была такая же проблема. Самым простым способом, который я смог найти, чтобы исправить это, было добавление следующей строки в ваш массив $ database в файле settings.php.
В полном объеме это должно выглядеть так:
Точная ошибка, которую я получал, выглядела так:
При обработке исключения выдается дополнительное необработанное исключение.
оригинал
PDOException: SQLSTATE [HY000] [2002] Нет такого файла или каталога в drupal_is_denied () (строка 2193 из ...
дополнительный
PDOException: SQLSTATE [HY000] [2002] Нет такого файла или каталога в _registry_check_code () (строка 3477 из ...
Команда Drush прервана ненормально из-за неисправимой ошибки.
источник
Я решил это с помощью следующих шагов, аналогично предыдущим ответам, но не таким же.
Добавьте символическую ссылку:
Найдите используемый php.ini:
Добавьте следующие настройки в php.ini:
источник
Это связано с ошибкой конфигурации в ваших конфигурациях PHP / SQL. Где-то сокет, который использует ваш веб-сервер и командная строка, настроен по-другому. Я рекомендую проверить вашу конфигурацию MySQL, чтобы увидеть, какой сокет unix используется, а затем убедиться, что одно и то же значение используется во всех конфигурациях и компиляциях php.ini.
Если вы не можете исправить конфигурацию, следующие шаги должны работать:
Если все это кажется сложным, альтернативой является изменение хоста в setting.php с localhost на 127.0.0.1. Это замедлит работу сайта, но для сайта разработки это может быть незаметным или важным. Для производственного сайта вы хотите использовать сокет Unix и должны разобраться в конфигурации.
источник
Найден более простой / альтернативный способ установки Drush на Mac:
Установите homebrew , вставив его в отдельный терминал
Затем добавьте drush, запустив следующее из того же терминала
Статус запущенного дроша теперь работает нормально.
источник
Если вы работаете с установкой MySQL на MySQL.com, вам просто нужно указать PHP в нужном месте для
.sock
файла.В вашем
php.ini
, добавьте / исправьте эти две строки:Чтобы найти местоположение вашего php.ini (он может еще не существовать), используйте это
Если
php.ini
файл там еще не существует, создайте его.источник
Согласитесь с другими ответами, что Drupal не может найти сокет mysql. Другие ответы помогли мне, но были неполными для установки с установленной официальной службой Oracle Mysql. А именно, расположение по умолчанию файла mysql.sock. Итак, вот резюме моих рекомендуемых ответов в зависимости от вашего варианта использования:
Если вы используете mysql, включенный в официальный пакет MAMP, используйте ответ @Andrew Alexander:
Для официального Oracle MYSQL:
источник
Для установки MAMP 4 решением была проверка «Сделать эту версию доступной в командной строке».
источник
Я получил следующее сообщение в терминале:
(MAMP PRO + PHP 7)
Я решил проблему с помощью этих инструкций
источник
Я забыл, что мой локальный mysql работает с уникальным номером порта, поэтому я не понимал, почему я получаю это, пока не проверил свою конфигурацию на другом локальном сайте.
источник