Wierzę, że udało mi się wdrożyć moją (bardzo podstawową) witrynę na fortrabbit, ale jak tylko połączę się z SSH w celu uruchomienia niektórych poleceń (takich jak php artisan migrate
lub php artisan db:seed
) , pojawia się komunikat o błędzie:
[PDOException]
SQLSTATE[HY000] [2002] No such file or directory
W pewnym momencie migracja musiała zadziałać, ponieważ moje tabele już tam są - ale to nie wyjaśnia, dlaczego nie działa teraz dla mnie.
Odpowiedzi:
Komunikat o błędzie wskazuje, że próbowane jest połączenie MySQL przez gniazdo (co nie jest obsługiwane).
W kontekście Laravela (rzemieślnika) prawdopodobnie chcesz użyć innego / właściwego środowiska. Np .:
php artisan migrate --env=production
(lub dowolne środowisko). Zobacz tutaj .źródło
Miałem dokładnie ten sam problem. Żadne z powyższych rozwiązań nie działało dla mnie. Rozwiązałem problem, zmieniając „host” w pliku /app/config/database.php z „localhost” na „127.0.0.1”.
Nie jestem pewien, dlaczego „localhost” domyślnie nie działa, ale znalazłem tę odpowiedź w podobnym pytaniu rozwiązanym w poście symfony2. https://stackoverflow.com/a/9251924/1231563
Aktualizacja: Niektóre osoby zapytały, dlaczego ta poprawka działa, więc przeprowadziłem trochę badań w tym temacie. Wygląda na to, że używają różnych typów połączeń, jak wyjaśniono w tym poście https://stackoverflow.com/a/9715164/1231563
Problem polega na tym, że „localhost” korzysta z gniazda UNIX i nie może znaleźć bazy danych w standardowym katalogu. Jednak „127.0.0.1” używa protokołu TCP (Transmission Control Protocol), co w istocie oznacza, że działa on przez „lokalny internet” na twoim komputerze i jest w tym przypadku znacznie bardziej niezawodny niż gniazdo UNIX.
źródło
localhost
nie działa i127.0.0.1
działa?A Unix socket file is used if you do not specify a host name or if you specify the special host name localhost.
dev.mysql.com/doc/refman/5.7/en/can-not-connect-to-server.htmlMam ten sam problem i korzystam z systemu Mac OS X 10.10 Yosemite. Włączyłem serwer Apache i PHP, które są już dostarczane z systemem operacyjnym. Potem właśnie skonfigurowałem bibliotekę mCrypt, aby zacząć. Potem, kiedy pracowałem z modelami i DB, dostałem błąd:
Powodem jest to, że PHP i MySQL nie mogą się połączyć. Aby rozwiązać ten problem, wykonuję następujące kroki:
Otwórz terminal i połącz się z mysql za pomocą:
Zostaniesz poproszony o podanie hasła. Następnie, gdy pojawi się komunikat mysql, wpisz następną komendę:
Otrzymasz coś takiego:
Zachowaj wartość ostatniego wiersza:
W
laravel
folderze projektu poszukaj pliku database.php tam, gdzie konfigurujesz parametry połączenia DB. W sekcji mysql dodaj następny wiersz na końcu:Musisz mieć coś takiego:
Teraz po prostu zapisz zmiany i ponownie załaduj stronę, a to musi działać!
źródło
/Applications/MAMP/tmp/mysql/mysql.sock
Wystąpił
[PDOException] SQLSTATE[HY000] [2002] No such file or directory
błąd z innego powodu. Właśnie skończyłem budować nowy stos LAMP na Ubuntu 12.04 z Apache 2.4.7, PHP v.5.5.10 i MySQL 5.6.16. Przeniosłem moje strony z powrotem i uruchomiłem je. Ale nie mogłem załadować mojej witryny opartej na Laravel 4.2.x z powodu[PDOException]
powyższego. Więc sprawdziłemphp -i | grep pdo
i zauważyłem ten wiersz:Ale w moim /etc/my.cnf plik skarpety jest w rzeczywistości
/var/run/mysqld/mysqld.sock
.Więc otworzyłem swój php.ini i ustawiłem wartość dla
pdo_mysql.default_socket
:Następnie zrestartowałem apache i sprawdziłem
php -i | grep pdo
:To naprawiło to dla mnie.
źródło
Odpowiedź @stuyam rozwiązała dla mnie problem „Brak takiego pliku lub katalogu”
Ale potem wystąpił błąd „Odmowa połączenia”. Jeśli ktoś miał ten sam problem, moim rozwiązaniem było zaktualizowanie pliku app / config / local / database.php, aby port miał numer 8889:
źródło
'port' => '33060'
ale ta odpowiedź mnie tam doprowadziła!Jeśli korzystasz z Laravel Homestead, upewnij się, że wywołujesz polecenia na serwerze.
Następnie po prostu przejdź do odpowiedniego katalogu i uruchom tam swoje polecenie.
źródło
source ~/.zshrc
2.homestead up --provision
3.homestead ssh
vagrant ssh
w moim przypadkuW moim przypadku nie miałem żadnego problemu, po prostu zapomniałem uruchomić usługę mysql ...
źródło
Opcja włączenia użytkownika Mampa Zezwól na dostęp sieciowy do MYSQL
źródło
Dodaj ścieżkę mysql.sock w pliku database.php jak w poniższym przykładzie
Na przykład
źródło
To działało po zmianie I od
DB_HOST=localhost
doDB_HOST=127.0.0.1
w .env plikuźródło
localhost
nie działa?Wynika to z tego, że PDO traktuje hosta „localhost” specjalnie:
(z http://php.net/manual/en/ref.pdo-mysql.connection.php )
Zmiana localhost na 127.0.0.1 „wymusi” użycie TCP.
Uwaga: mysqli_connect działa poprawnie z localhost.
źródło
Opierając się na odpowiedzi od @dcarrith ...
Zamiast edytować pliki konfiguracyjne, utworzyłem alias w miejscu, w którym szuka PHP, który łączy się z prawdziwym mysql.sock. ( źródło )
Po prostu uruchom te dwa polecenia (nie trzeba restartować):
źródło
Krok 1
Znajdź ścieżkę do swojego unix_socket, aby to zrobić, po prostu uruchom
netstat -ln | grep mysql
Powinieneś dostać coś takiego
Krok 2
Weź to i dodaj do swojego parametru unix_socket
Mam nadzieję, że to pomoże !!
źródło
Korzystam z MAMP Pro i miałem podobny problem podczas próby migracji (tworzenie tabel db). Wypróbowałem kilka z tych sugestii, ale nie zrobiłem tego dla mnie.
Po prostu (po godzinie googlingu) dodałem dwie rzeczy do pliku /config/database.php.
Działa dobrze teraz!
źródło
Sprawdź dokładnie swój port. W moim przypadku było 8889 i używam 8888. zmień „DB_HOST” z „localhost” na „127.0.0.1” i odwrotnie
źródło
Miałem te problemy, kiedy działałem z wykorzystaniem kontenerów dokerów.
Rozwiązaniem było umieszczenie nazwy kontenera usługi MySQL, którego
docker_compose.yml
używałem w DB_HOST. W moim przypadku było todb
:Mam nadzieję, że to pomoże.
źródło
Od wersji Laravel 5 nazwa użytkownika i hasło do bazy danych znajduje się w pliku .env, który istnieje w katalogu projektu, np
Jak widać, zmienne środowiskowe zastępują ciągi „forge” tutaj, więc ich zmiana nie ma wpływu:
Więcej informacji znajduje się tutaj https://mattstauffer.co/blog/laravel-5.0-environment-detection-and-environment-variables
źródło
Natknąłem się na ten problem podczas uruchamiania PHPUnit w Elixir / Gulp i Homestead jako moim środowisku Vagrant.
W moim przypadku edytowany plik .env od
DB_HOST=localhost
celuDB_HOST=192.168.10.10
, gdzie192.168.10.10
jest moje IP hosta Vagrant / Homestead.źródło
Próba połączenia z hostem lokalnym:
Próba połączenia z 127.0.0.1:
OK, po prostu skomentuj / usuń następujące ustawienie z my.cnf (w OS X 10.5:),
/opt/local/etc/mysqlxx/my.cnf
aby uzyskać:Oczywiście zatrzymaj i uruchom MySQL Server.
źródło
Miałem podobne problemy z dostępem do mojej witryny Drupal. Naprawiłem to, otwierając wiersz poleceń i ponownie uruchamiając mój serwer lub usługę MySQL:
To powinno działać. Jeśli nie, zrestartuj lokalny serwer WWW:
To powinno wystarczyć. Mam nadzieję, że działa również w innych środowiskach. Zauważ, że te polecenia zazwyczaj wymagają uprawnień administratora.
źródło
Jeśli korzystasz z Laravel Homestead, oto ustawienia
(w tym Vagrant-Virtual Machine)
.bash-profil
database.php
Terminal
źródło
Jeśli ktoś nadal szuka odpowiedzi, po prostu sprawdź plik .env. Z jakiegoś powodu laravel tworzy plik .env.example, więc wszystkie te odpowiedzi nie działały dla mnie. Naprawiłem problem ze zmianą nazwy pliku .env. Na .env
źródło
Stało się tak, ponieważ MySQL nie działał. Uruchomienie MySQL nie powiodło się, ponieważ brakowało mi
/usr/local/etc/my.cnf.d/
katalogu.Było to wymagane przez mój
/usr/local/etc/my.cnf
plik konfiguracyjny jako glob include (include /usr/local/etc/my.cnf.d/*.cnf
).Uruchomienie
mkdir /usr/local/etc/my.cnf.d
, a następnie uruchomienie MySQL rozwiązało problem.źródło
W moim przypadku uruchomiłem migrację php rzemieślnika na terminalu Mac, kiedy musiałem ssh na włóczęgę i uruchomić go stamtąd. Mam nadzieję, że to pomaga komuś na ból głowy.
źródło
Miałem ten sam problem przy użyciu Docker i nazwy usługi MySQL
db
w pliku docker_compose.yml:W
.env
pliku dodałem następujące elementy :powinieneś także upewnić się, że twój host jest wykrywalny z aplikacji php.
Było tak, ponieważ PHP nie wymyśliło, którego hosta użyć do połączenia.
źródło
Podczas korzystania z VirtualMachine upewnij się, że ssh na tym komputerze i przejdź do folderu aplikacji i stamtąd wywołać polecenie php artisan migrate.
źródło
W przeciwnym razie po prostu użyłem
zamiast
dla mojej konfiguracji larwy kuźni za pomocą zagrody. Zakładam, że oznaczało to, że witryna była obsługiwana, ale serwer MySQL nigdy nie był uruchamiany. Kiedy użyłem tego ostatniego polecenia, aby uruchomić moje błędne pudełko, błąd zniknął.
źródło
Wszystkie te odpowiedzi wydają się jak podnoszenie ciężarów ...
Właśnie utworzyłem
.env
plik; edytowałem mójbootstrap/app.php
plik i odkomentowałem następujący wiersz ...Dotenv::load(__DIR__.'/../');
Mam nadzieję, że to komuś pomoże
źródło
Dla każdego, kto próbuje utworzyć nowe połączenie db nie na laravel, ale natknął się tutaj, szukając odpowiedzi na uruchomienie PDO z terminala. To by ci pomogło. Możesz go zmienić tak, aby działał najlepiej dla Ciebie.
mam nadzieję, że to pomoże!
źródło
W moim przypadku musiałem usunąć folder bootstrap / cache i spróbować ponownie.
Moje cenario było po migracji serwera.
źródło