Naprawiłem to, zmieniając parametry połączenia, upewnij się, że mysql jest włączony i że wszystkie tabele istnieją w bazie danych.
Touqeer Shafi
Odpowiedzi:
12
Miałem ten sam problem podczas instalacji Magento 2.1.0 z PHP 7.0.13. Mógłbym rozwiązać ten problem, ustawiając nazwę hosta bazy danych na 127.0.0.1 zamiast localhost .
Jeśli serwer wymienione w app/etc/local.xmlto localhosti ten błąd pojawia się w dzienniku błędów Magento, Magento, ale nadal działa ok, następnie mysql został ponownie uruchomiony i gniazdko /tmp/mysql.socklub cokolwiek gniazdo plik zostanie utworzony w my.cnfchwilowo zniknął.
Ponieważ go brakuje, łącznik mysql PDO zgłasza SQLSTATE[HY000] [2002] No such file or directory
Jeśli ciągle pojawia się ten błąd i nie masz dostępu do Magento oprócz strony błędu wyjątku, oznacza to, że mysql całkowicie się zawiesił i potrzebujesz dostawcy usług hostingowych, aby dowiedzieć się, dlaczego i zrestartować mysql.
Może się to również zdarzyć, jeśli twój system plików jest pełny ... df -h 1st ... oczywiście, przeważnie będziesz otrzymywać ostrzeżenia przed tym ...
mysqld nie będzie działał normalnie i będzie w trybie „bezpiecznym”
Zwykle jest to spowodowane tym, że inna wersja PHP jest używana przez wiersz poleceń PHP niż serwer WWW. W szczególności mysql.sockmoże być źle skonfigurowany, jeśli tak jest.
Aby ustalić, czy korzystasz z jednej instancji PHP:
Zaloguj się do swojego serwera Magento.
Wpisz następujące polecenie:
php -i | grep 'php.ini'
Określa ustawienia używane przez interfejs wiersza polecenia PHP (CLI). Uwaga, gdzie php.inisię znajduje.
Jeśli jeszcze tego nie zrobiłeś, skonfiguruj phpinfo.phpna swoim serwerze internetowym.
Porównaj wartość Loaded Configuration File z phpinfo.phpz jednym z php -i.
phpinfo.phppokazuje php.iniplik używany przez twój serwer WWW. Jeśli różni się od tego, co jest w PHP php.ini, musisz dostosować wszystkie ustawienia PHP zarówno dla CLI PHP, jak i serwera WWW.
Aby uzyskać dodatkowe informacje, zapoznaj się z dokumentacją dostarczoną z twoim serwerem internetowym.
Mam kilka wersji PHP dostępnych dla mnie przez powłokę - pisanie php i naciskanie tab pokazuje, o których wie moje autouzupełnianie.
Dla mnie PHP 5.4, 5.5 i 5.6 działały dobrze, ale PHP 7 nie znalazł mysql.sock i zawiesił się przy „SQLSTATE [HY000] [2002] Brak błędu pliku lub katalogu” omówionego w tym pytaniu .
# Prints [ok]
echo "<?php print(new mysqli('localhost', 'root', 'root', 'mysql') ? '[ok]' : '[error]').PHP_EOL; ?>"| php-5.6.20# Prints [error] and shows a warning
echo "<?php print(new mysqli('localhost', 'root', 'root', 'mysql') ? '[ok]' : '[error]').PHP_EOL; ?>"| php-7.0.8
Aby zobaczyć, gdzie znajduje się gniazdo serwera mysql, użyj tego polecenia:
cat /etc/mysql/my.cnf | grep socket
W moim przypadku, gdy Percona Mysql jest zainstalowana w moim błędnym systemie, plik gniazda skarpety zdarzył się tutaj:
/var/run/mysqld/mysqld.sock
(zauważ, że nazywa się to mysqld, a nie po prostu mysql )
Mam do wyboru kilka wersji php, a te polecenia pokazały mi, które miały problemy, a które były w porządku:
Odpowiedzią było dla mnie po prostu włączenie kodu do błędnego skryptu dostawcy w celu utworzenia dowiązania symbolicznego między /tmp/mysql.sock i /var/run/mysqld/mysqld.sock
if[!-L /tmp/mysql.sock ];then
echo "Creating symbolic link for php 7 to connect to mysql.sock"
ln -s /var/run/mysqld/mysqld.sock /tmp/mysql.sock
fi
Po wprowadzeniu nowego dowiązania symbolicznego podany wcześniej skrypt testowy działa doskonale dla wszystkich wersji PHP i mogę używać localhost w kodzie zamiast podawać adres IP 127.0.0.1 .
Otrzymuję ten sam błąd „SQLSTATE [HY000] [2002] Brak takiego pliku lub katalogu”. I stwierdził, że usługa MySQL została zatrzymana. Uruchomiłem usługę MySQL i działa ona poprawnie.
Odpowiedzi:
Miałem ten sam problem podczas instalacji Magento 2.1.0 z PHP 7.0.13.
Mógłbym rozwiązać ten problem, ustawiając nazwę hosta bazy danych na 127.0.0.1 zamiast localhost .
źródło
Jeśli serwer wymienione w
app/etc/local.xml
tolocalhost
i ten błąd pojawia się w dzienniku błędów Magento, Magento, ale nadal działa ok, następnie mysql został ponownie uruchomiony i gniazdko/tmp/mysql.sock
lub cokolwiek gniazdo plik zostanie utworzony wmy.cnf
chwilowo zniknął.Ponieważ go brakuje, łącznik mysql PDO zgłasza
SQLSTATE[HY000] [2002] No such file or directory
Jeśli ciągle pojawia się ten błąd i nie masz dostępu do Magento oprócz strony błędu wyjątku, oznacza to, że mysql całkowicie się zawiesił i potrzebujesz dostawcy usług hostingowych, aby dowiedzieć się, dlaczego i zrestartować mysql.
źródło
ustaw nazwę hosta bazy danych na 127.0.0.1 zamiast localhost.
źródło
Może się to również zdarzyć, jeśli twój system plików jest pełny ... df -h 1st ... oczywiście, przeważnie będziesz otrzymywać ostrzeżenia przed tym ...
mysqld nie będzie działał normalnie i będzie w trybie „bezpiecznym”
HTH SNS
źródło
Miałem ten sam problem i użyłem poniżej, aby wybrać, którego php ma użyć.
/usr/local/etc/php/7.2/bin/php bin/magento setup:di:compile
Zobacz oficjalne dokumenty: SQLSTATE [HY000] [2002] Brak takiego pliku lub katalogu
źródło
Wydaje się, że jest to niewłaściwy problem z wersją PHP, musisz wybrać, którego php ma użyć do uruchomienia polecenia w następujący sposób:
PS: Powyższa próbka dotyczy MAC, możesz to zrobić w podobny sposób dla systemu Windows lub Unix.
źródło
Upewnij się, że odpowiednio edytujesz aplikację / etc / local.xml . Jeśli nie masz prefiksów dla swoich tabel, upewnij się, że poprawna linia to:
NIE
źródło
Zwykle jest to spowodowane tym, że inna wersja PHP jest używana przez wiersz poleceń PHP niż serwer WWW. W szczególności
mysql.sock
może być źle skonfigurowany, jeśli tak jest.Aby ustalić, czy korzystasz z jednej instancji PHP:
Wpisz następujące polecenie:
Określa ustawienia używane przez interfejs wiersza polecenia PHP (CLI). Uwaga, gdzie
php.ini
się znajduje.phpinfo.php
na swoim serwerze internetowym.phpinfo.php
z jednym zphp -i
.phpinfo.php
pokazujephp.ini
plik używany przez twój serwer WWW. Jeśli różni się od tego, co jest w PHPphp.ini
, musisz dostosować wszystkie ustawienia PHP zarówno dla CLI PHP, jak i serwera WWW.Aby uzyskać dodatkowe informacje, zapoznaj się z dokumentacją dostarczoną z twoim serwerem internetowym.
źródło
Mam kilka wersji PHP dostępnych dla mnie przez powłokę - pisanie php i naciskanie tab pokazuje, o których wie moje autouzupełnianie.
Dla mnie PHP 5.4, 5.5 i 5.6 działały dobrze, ale PHP 7 nie znalazł mysql.sock i zawiesił się przy „SQLSTATE [HY000] [2002] Brak błędu pliku lub katalogu” omówionego w tym pytaniu .
Aby zobaczyć, gdzie znajduje się gniazdo serwera mysql, użyj tego polecenia:
W moim przypadku, gdy Percona Mysql jest zainstalowana w moim błędnym systemie, plik gniazda skarpety zdarzył się tutaj:
(zauważ, że nazywa się to mysqld, a nie po prostu mysql )
Mam do wyboru kilka wersji php, a te polecenia pokazały mi, które miały problemy, a które były w porządku:
Odpowiedzią było dla mnie po prostu włączenie kodu do błędnego skryptu dostawcy w celu utworzenia dowiązania symbolicznego między /tmp/mysql.sock i /var/run/mysqld/mysqld.sock
Po wprowadzeniu nowego dowiązania symbolicznego podany wcześniej skrypt testowy działa doskonale dla wszystkich wersji PHP i mogę używać localhost w kodzie zamiast podawać adres IP 127.0.0.1 .
źródło
Otrzymuję ten sam błąd „SQLSTATE [HY000] [2002] Brak takiego pliku lub katalogu”. I stwierdził, że usługa MySQL została zatrzymana. Uruchomiłem usługę MySQL i działa ona poprawnie.
źródło
Musisz zmienić nazwę hosta z localhost na 127.0.0.1 w pliku konfiguracyjnym env w katalogu głównym magento
źródło