Próbuję połączyć się z moją bazą danych MySQL za pomocą terminala na moim Apple (z PHP).
Wczoraj działało dobrze, a teraz nagle pojawia się błąd w tytule.
Skrypt działa, gdy używam mojej przeglądarki do uruchomienia go (mam zainstalowany XAMPP), ale Terminal odmawia połączenia z bazą danych.
Oto plik, który dołączam do połączenia (skrypt działa, gdy go nie uwzględnię, ale potem nie łączy się z bazą danych):
<?php
mysql_connect("localhost", "root", "") or die(mysql_error());
mysql_select_db("FNB1C_data") or die(mysql_error());
?>
To powinno działać, ponieważ działa z moją przeglądarką.
Polecenie, którego używam w terminalu to php scriptname.php
.
localhost
gniazdo działało, i może być ważne, jeśli nie chcesz, aby dodatkowe obciążenie związane z wysyłaniem pakietów do routera przed uzyskaniem dostępu do bazy danych.cd /tmp
a następnie:sudo ln -s /var/run/mysqld/mysqld.sock mysql.sock
.Miałem również ten błąd, ale mogłem go naprawić tylko dzięki sugestii tutaj .
Podsumowując, użyj:
Zamiast:
Powodem jest to, że „localhost” jest specjalną nazwą dla sterownika MySQL, który wykorzystuje gniazdo UNIX do łączenia się z MySQL zamiast gniazda TCP.
źródło
hosts
plik, to może brakować lub pomieszaneMiałem ten sam problem i tak go naprawiłem:
Miałem to i to nie działało:
Zrobiłem to i zadziałało:
Zamiast korzystać z serwera mysql, podłączyłem się bezpośrednio do Unix Socket. Pracował dla mnie.
źródło
Gniazdo MySQL znajduje się ogólnie w
/tmp/mysql.sock
lub/var/mysql/mysql.sock
, ale prawdopodobnie PHP wygląda w niewłaściwym miejscu.Sprawdź, gdzie jest twoje gniazdo:
Po zakończeniu aktualizacji updatedb:
Następnie zlokalizuj swój php.ini:
spowoduje to wyświetlenie czegoś takiego:
Edytuj swój php.ini
Zmień linie:
gdzie /tmp/mysql.sock jest ścieżką do twojego gniazda.
Zapisz zmiany i wyjdź z ESC + SHIFT: x
Uruchom ponownie Apache
źródło
php.ini.default
naphp.ini
.sudo apachectl restart
Jestem na XAMPP na Mac OS X, a powyższe rozwiązanie Briana Lowe'a działało z niewielką modyfikacją .
Plik mysql.sock znajduje się w folderze „/ Applications / xampp / xamppfiles / var / mysql /”. Musiałem więc połączyć go zarówno w / tmp, jak i / var / mysql. Nie sprawdziłem, który jest używany przez wiersz poleceń PHP, ale to naprawiło, więc cieszę się :-)
źródło
Mac OS X EL Capitan + MAMP Pro Zrób to
Zrób to
Mam nadzieję, że to pozwoli Ci zaoszczędzić trochę czasu.
źródło
mysql.dock
w/tmp
które go rozwiązać. Dzięki!Powodem jest to, że php nie może znaleźć właściwej ścieżki
mysql.sock
.Upewnij się, że twój mysql jest uruchomiony jako pierwszy.
Następnie potwierdź
mysql.sock
, na przykład , która ścieżka jest zlokalizowana/tmp/mysql.sock
następnie dodaj ten ciąg ścieżki do php.ini:
Na koniec uruchom ponownie Apache.
źródło
Gdy napotykasz następujący problem:
Ustaw „mysql.default_socket” wartość w
/etc/php.ini
DoNastępnie uruchom ponownie usługę sieci web w serwerze administratora
źródło
Napraw błąd zagnieżdżenia 2002 - który łączy miejsce, w którym MySQL umieszcza gniazdo i gdzie OSX uważa, że powinno być, MySQL umieszcza go w / tmp, a OSX szuka go w / var / mysql gniazdo jest rodzajem pliku, który pozwala klientowi mysql / komunikacja z serwerem.
i wtedy
źródło: http://coolestguidesontheplanet.com/get-apache-mysql-php-phpmyadmin-working-osx-10-10-yosemite/
źródło
Innym rozwiązaniem jest naprawienie położenia gniazda w pliku konfiguracyjnym php.ini w następujący sposób:
Oczywiście dowiązanie symboliczne również działa, więc kwestią preferencji jest to, który zmienisz.
źródło
Podczas instalacji php53-mysql przy użyciu portu zwraca następujący komunikat, który jest rozwiązaniem tego problemu:
źródło
miałem ten sam problem
[PDOException] SQLSTATE [HY000] [2002] Brak takiego pliku lub katalogu
[ErrorException] Ostrzeżenie: PDO :: __ construct (): [2002] Brak takiego pliku lub katalogu (próba połączenia przez unix: ///var/mysql/mysql.sock) w… htdocs / Symfony / vendor / doctrine-dbal / lib / Doctrine / DBAL / Driver / PDOConnection.php
Rozwiązaniem jest więc utworzenie dowiązania symbolicznego do pliku skarpety, co rozwiąże problem. Wykonaj następujące czynności, aby to rozwiązać:
$ sudo mkdir / private / var / mysql /
$ sudo ln -s /Applications/MAMP/tmp/mysql/mysql.sock /private/var/mysql/mysql.sock
źródło: http://www.reecefowell.com/2012/07/21/symfony2-cli-does-not-connect-to-mysql-while-browser-works-fine/
źródło
Mam te same błędy. Mysql działał jako samodzielna aplikacja przed uruchomieniem phpMyAdmin.
Właśnie zatrzymałem mysql Następnie sudo / Aplikacje / XAMPP / xamppfiles / xampp stop sudo / Aplikacje / XAMPP / xamppfiles / xampp start
Działa dobrze
źródło
Właśnie miałem ten problem, ale pojawił się tylko podczas ładowania niektórych stron (inne strony działały poprawnie). Okazało się, że dzwoniłem do MySQL po zamknięciu połączenia
mysql_close()
. Tak jak powiedział @brucenan: upewnij się, że MySQL działa, gdy go wywołujesz .źródło
Możesz to zrobić po prostu aliasingując MAMP php na terminalu Apple:
Przykład:
> phpmamp - v
Teraz możesz uruchomić coś takiego:
> phpmamp scriptname.php
Uwaga: zostanie to zastosowane tylko do bieżącej sesji terminala.
źródło
Ponieważ możesz używać MAMP, zmień port na domyślny 3306 lub użyj 127.0.0.1 w database.php
Lub przy ustawieniach domyślnych:
źródło
Klient mySQL domyślnie próbuje połączyć się przez plik lokalny zwany gniazdem zamiast połączyć się z adresem pętli zwrotnej (127.0.0.1) dla hosta lokalnego.
Domyślna lokalizacja tego pliku gniazda, przynajmniej w OSX, to
/tmp/mysql.sock
.SZYBKIE, MNIEJ ELEGANCKIE ROZWIĄZANIE
Utwórz dowiązanie symboliczne, aby oszukać system operacyjny w znalezieniu odpowiedniego gniazda.
PRAWIDŁOWE ROZWIĄZANIE
Zmień ścieżkę gniazda zdefiniowaną w
startMysql.sh
pliku w/Applications/MAMP/bin
.źródło