Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: mysqli::mysqli(): (HY000/2002): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
Forum PHP.pl > Forum > Bazy danych > MySQL
szaleq
Witam

Na wstępie zaznaczę, że przeczytałem kilkanaście tematów dotyczących tego błędu na tym forum, oraz kilkanaście anglojęzycznych artykułów znalezionych w google. Żadne rozwiązania nie zadziałały w moim przypadku.

Mam Apache2 oraz php5 na ubuntu 12.04. Od dawna wszystko działało bez zarzutu, aż kilka dni temu pojawił się błąd:
Kod
mysqli::mysqli(): (HY000/2002): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

po przeinstalowaniu mysql-server błąd zniknął, lecz po ponownym uruchomieniu komputera pojawił się znów. Kolejne próby reinstalacji nie przyniosły już rezultatów.
Dodam, że nie mam dostępu do bazy również z konsoli, zdaje się że mysql w ogóle nie startuje (próba wywołania w konsoli 'service mysql start' zwraca komnikat: 'start: Job failed to start', a polecenie 'mysql -u root -p' po zalogowaniu użytkownika zwraca ten sam komunikat błędu, co w temacie).

Jeśli ktoś wie z czego może to wynikać, bardzo proszę o pomoc. Nie wiem czy napisałem wystarczająco dużo informacji o problemie, jeśli coś jeszcze jest istotne powiedzcie, co napisać.

Pozdrawiam
szaleq
erix
A demon MySQL w ogóle startuje?
webdice
W większości przypadków problem leży w nieprawidłowym zdefiniowaniu ścieżki do mysqld.sock.
redeemer
Sprawdź logi mysql dlaczego nie startuje.
szaleq
W logach mysql nic nie ma. W syslog pojawia się wpis:
Kod
Aug 13 18:22:58 nazwa-komputera kernel: [  675.549843] init: mysql pre-start process (3117) terminated with status 1

@webdice, tak właśnie myślałem. Jednak na moim komputerze w ogóle nie istnieje taki plik.
erix
A próbowałeś na czystej bazie instalować MySQL?
redeemer
Nie istnieje taki plik (/var/run/mysqld/mysqld.sock), bo serwer nie startuje. Masz plik konfiguracyjny /etc/mysql/my.cnf?
szaleq
Tak, mam my.cnf.
Poczytałem więcej o socketach, wiem już że te pliki powstają podczas startu demona.
Trafiłem również na porady, w których mówiono o prawach dostępu do folderu w którym ma być socket. Ustawiałem wszystko zgodnie z tymi instrukcjami jednak to też nie pomaga. Były również porady, by zmienić w my.conf ścieżkę socketu na /tmp/mysql.sock jednak to też nie pomogło.
Nie próbowałem instalować od nowa bo nie mam "czystej bazy", ale właśnie sciągam instalkę ubuntu i spróbuję postawić od nowa.
Mimo to chciałbym naprawdę dojść do sedna i wyjaśnić co się stało więc bieżącej instalacji nie ruszam. Dodam, że do tej pory używałem mysql tylko od strony "klienta", nie bawiąc się żadnymi configami i dopiero teraz zaczynam powoli poznawać działanie samego servera mysql. Tak więc będę wdzięczny za wszelkie dalsze wskazówki.

P.S. czy istnieje jakaś sposób, by na nowej instalacji mysql odczytać pliki bazy z poprzedniej instalacji?

Pozdrawiam
szaleq

Witam

Jak mówiłem, zainstalowałem od nowa ubuntu, na czysto postawiłem mysql i niby wszystko grało... ale do czasu. W tej chwili server normalnie startuje, wszystko działa bez zarzutu prócz jednej bazy. Podczas próby wyświetlenia tabel tej bazy w phpmyadmin zostałem wylogowany. Spróbowałem więc przez konsolę. Po wybraniu bazy wszystko jest ok, ale gdy próbuję zrobić dowolną operację (np prostu select) otrzymuję błąd:
Kod
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (111)
ERROR:
Can't connect to the server


Wywołanie check table dla wszystkich tabel tej bazy zwraca 'ok'.
Wysnuwam jeden wniosek (choć może się mylę...) że coś nie tak ze strukturą mojej bazy (czy możliwe, że również to było przyczyną że na poprzedniej instalacji serwer całkiem się nie uruchamiał?), ale na nowej instalacji wszystkie tabele były definiowane od nowa. I z początku wszystko działało bez zarzutu... Jeśli ktoś może coś na ten temat powiedzieć, będę wdzięczny za wszelkie wskazówki/informacje.

Pozdrawiam
szaleq
erix
Mogło być tak, że baza została uwalona.

Tabele były definiowane od nowa - to znaczy?
szaleq
Cytat(erix @ 20.08.2012, 11:17:35 ) *
Mogło być tak, że baza została uwalona.

Tabele były definiowane od nowa - to znaczy?


To znaczy, że na czystej instalacji mysql utworzyłem wszystkie tabele "z palca", nie importując nic, nie wgrywając żadnych danych z poprzedniej bazy.

Żeby było ciekawiej, założyłem wszystkie tabele jeszcze raz, tym razem bez prefixu i jak dotąd działa... Wcześniej wszystkie tabele miały prefix 'img_'. Gdy próbowałem np utworzyć tabelę img_users przez phpmyadmin otrzymywałem błąd, że nie można utworzyć tabeli, ponieważ taka tabela nie istnieje (!?) jednak gdy takie same tabele utworzyłem z terminala, wszystko poszło gładko. Ale potem właśnie się wywaliło.

Wniosek: coś nie tak z tym moim prefixem. Czy to możliwe, że nazwy tabel rozwalają mi bazę? (a konkretnie prefix "img_"...) Nie znam się na działaniu mysql, ale na zdrowy rozum - co za różnica czy tabela nazywa się "users", czy "img_users"? "config", czy "img_config"? Jeśli ktoś coś wie na ten temat, będę wdzięczny za informacje.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.