Zainstalowałem Drusha po raz pierwszy (więc może to być błąd konfiguracji) i próbuję zaktualizować do najnowszej podstawowej wersji Drupala.
Drush podaje mi ten błąd - jestem na polu OSX.
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.
Odpowiedzi:
Oto jak rozwiązałem to na macOS:
Źródło: Praca z Drushem na Mampie .
źródło
W konfiguracji bazy danych w pliku settings.php dla witryny Drupal, spróbuj zmienić hosta na 127.0.0.1 zamiast localhost.
zamień domyślny: „host” => „localhost”,
z: „host” => „127.0.0.1”,
Wystąpił ten błąd w systemie OS X XAMPP, ale rozwiązanie również powinno mieć zastosowanie. Jak wspomniał Clive, jest to problem z połączeniem MySQL. Ten post zawiera więcej informacji na temat problemu.
źródło
Wyjaśnienie
PDOException - błąd 2002 oznacza, że drush nie może połączyć się z serwerem bazy danych MySQL za pośrednictwem lokalnego pliku gniazda (na przykład
/tmp/mysql.sock
) jako skonfigurowany w twojejphp.ini
.To nie jest tak naprawdę związane z
drush
samym sobą, to twoja konfiguracja PHP i ten błąd może być odtworzony przez:Naprawić
Jeśli twój MySQL działa poprawnie, upewnij się, że te dwa pliki:
mysql_config --socket
lub:
mysqladmin variables | grep socket
php -i | grep -w default_socket
lub:
php -r 'phpinfo();' | grep -w default_socket
dopasowanie i wskazuje ten sam plik i oba istnieją.
Jeśli nie, sprawdź, który z nich jest poprawny:
następnie rozwiąż problem za pomocą jednego z następujących rozwiązań:
utwórz dowiązanie symboliczne, aby wskazać działające
mysql.sock
gniazdo unixowe (w przypadku MAMP patrz odpowiedź Andrew ),na przykład, jeśli używasz MAMP, możesz utworzyć symboliczny link do domyślnej lokalizacji:
poprawna ścieżka twojego
pdo_mysql.default_socket
,mysql.default_socket
lubmysqli.default_socket
twojegophp.ini
podaj
unix_socket
wsettings.php
swojej$databases
zmiennej, npRozwiązywanie problemów
Inne przypadki na krawędziach mogą być:
Debuguj za pomocą 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
w swoimxdebug.ini
sudo dtruss -fn mysqld
, w systemie Linux za pomocąstrace
źródło
Używam MAMP Pro i miałem ten sam problem. Najłatwiejszym sposobem, aby to naprawić, było dodanie następującego wiersza do tablicy $ bazy danych w pliku settings.php.
W całości powinno to wyglądać tak:
Dokładny błąd, który się pojawiał, wyglądał tak:
Zgłoszono dodatkowy nieprzechwycony wyjątek podczas obsługi wyjątku.
Oryginalny
PDOException: SQLSTATE [HY000] [2002] Brak takiego pliku lub katalogu w drupal_is_denied () (wiersz 2193 z ...
Dodatkowy
PDOException: SQLSTATE [HY000] [2002] Brak takiego pliku lub katalogu w _registry_check_code () (wiersz 3477 z ...
Polecenie Drush zostało zakończone nienormalnie z powodu nieodwracalnego błędu.
źródło
Rozwiązałem to, wykonując następujące kroki, podobne do poprzednich odpowiedzi, ale nie takie same.
Dodaj dowiązanie symboliczne:
Znajdź używany plik php.ini:
Dodaj następujące ustawienia do php.ini:
źródło
Jest to spowodowane błędem konfiguracji w konfiguracjach PHP / SQL. Gdzieś gniazdo używane przez twój serwer WWW i linie poleceń są skonfigurowane inaczej. Polecam sprawdzenie konfiguracji MySQL, aby zobaczyć, które gniazdo UNIX jest używane, a następnie upewnić się, że ta sama wartość jest używana we wszystkich konfiguracjach i kompilacjach php.ini.
Jeśli nie możesz naprawić konfiguracji, powinny działać następujące kroki:
Jeśli wszystko wydaje się skomplikowane, alternatywą jest zmiana hosta w pliku setting.php z localhost na 127.0.0.1. Spowoduje to spowolnienie witryny, ale w przypadku witryny programistycznej może nie być zauważalna lub ważna. W przypadku strony produkcyjnej chcesz użyć gniazda unix i powinieneś uporządkować konfigurację.
źródło
Znaleziono łatwiejszy / alternatywny sposób instalacji drush na komputerze Mac:
Zainstaluj homebrew , wklejając go w samodzielnym terminalu
Następnie dodaj drush, uruchamiając następujące polecenie z tego samego terminala
Uruchamianie statusu drush działa teraz dobrze.
źródło
Jeśli pracujesz z instalacją MySQL.com w MySQL, wystarczy wskazać PHP we właściwej lokalizacji dla
.sock
pliku.W swoim
php.ini
dodaj / zmień te dwa wiersze:Aby znaleźć lokalizację pliku php.ini (może jeszcze nie istnieć), użyj tego
Jeśli
php.ini
plik jeszcze tam nie istnieje, utwórz go.źródło
Zgadzam się z innymi odpowiedziami, że Drupal nie może znaleźć gniazda mysql. Inne odpowiedzi pomogły mi, ale były niekompletne z powodu zainstalowania oficjalnej usługi Oracle Mysql. Mianowicie domyślna lokalizacja pliku mysql.sock. Oto podsumowanie moich zalecanych odpowiedzi w zależności od przypadku użycia:
Jeśli używasz mysql zawartego w oficjalnym pakiecie MAMP, użyj odpowiedzi @Andrew Alexander:
W przypadku oficjalnej bazy danych Oracle MYSQL:
źródło
W przypadku konfiguracji MAMP 4 rozwiązaniem było sprawdzenie „Udostępnij tę wersję w wierszu polecenia”.
źródło
W terminalu dostałem następujący komunikat:
(MAMP PRO + PHP 7)
Rozwiązałem problem za pomocą tych instrukcji
źródło
Zapomniałem, że mój lokalny mysql działa na unikalnym numerze portu, więc byłem zdezorientowany, dlaczego to otrzymałem, dopóki nie sprawdziłem mojej konfiguracji na innej stronie lokalnej.
źródło