Ostatnio zacząłem pojawiać się błąd przy każdej próbie dodania treści bez względu na jej typ. Oto błąd, który pojawia się w przeglądarce:
Zgłoszono dodatkowy nieprzechwycony wyjątek podczas obsługi wyjątku.
Oryginalny wyjątek PDO: SQLSTATE [HY000]: Błąd ogólny: serwer MySQL 2006 zniknął: WYBIERZ LICZBĘ (cid) OD {komentarz} GDZIE status =: status; Array ([: status] => 0) w comment_count_unpublished () (wiersz 313 /Applications/MAMP/htdocs/modules/comment/comment.module).
Dodatkowy
PDO Wyjątek: SQLSTATE [HY000]: Błąd ogólny: serwer MySQL 2006 zniknął: INSERT INTO {watchdog} (identyfikator użytkownika, typ, komunikat, zmienne, ważność, łącze, lokalizacja, odsyłacz, nazwa hosta, znacznik czasu) WARTOŚCI (: db_insert_placeholder_0,: db_insert_placeholder_1 ,: db_insert_placeholder_2,: db_insert_placeholder_3,: db_insert_placeholder_4,: db_insert_placeholder_5,: db_insert_placeholder_6,: db_insert_placeholder_7,: db_insert_placeholder_8,: db_insert_placeholder_9); Tablica ([: db_insert_placeholder_0] => 1 [: db_insert_placeholder_1] => php [: db_insert_placeholder_2] =>% type:! Message in% function (line% line% file). [: Db_insert_placeholder_3] => a: 6: { s: 5: „% type”; s: 12: „PDOException”; s: 8: „! message”; s: 154: „SQLSTATE [HY000]: Błąd ogólny: 2006 Serwer MySQL zniknął: WYBIERZ LICZBĘ (cid) OD {komentarz} GDZIE status =: status; Array ([: status] = & gt; 0) "; s: 9:"% function "; s: 27:" comment_count_unpublished () "; s: 5:"% file "; s: 56:" / Applications / MAMP /htdocs/modules/comment/comment.module";s:5:"%line";i:313;s:14:"severity_level";i:3;} [: db_insert_placeholder_4] => 3 [: db_insert_placeholder_5] = > [: db_insert_placeholder_6] =>http: // localhost: 8888 /? q = node% 2Fadd% 2Farcade-project & amp ; [: db_insert_placeholder_7] => http: // localhost: 8888 / [: db_insert_placeholder_8] => 127.0.0.1 [: db_insert_placeholder_9] => 1338336955) w dblog_watchdog () (wiersz 154 w / Applications / MAMP / htdocs / modules / dblog / dblog.module).
W moim pliku błędu php pojawia się również następujący błąd:
Błąd krytyczny PHP: nieprzechwycony wyjątek „PDOException” z komunikatem „SQLSTATE [HY000]: Błąd ogólny: serwer MySQL 2006 zniknął” w /Applications/MAMP/htdocs/includes/database/database.inc:2136
Śledzenie stosu:
0 /Applications/MAMP/htdocs/include/database/database.inc(2136): PDOStatement-> execute (Array)
1 /Applications/MAMP/htdocs/includes/database/database.inc(664): DatabaseStatementBase- > wykonaj (Array, Array)
2 /Applications/MAMP/htdocs/includes/database/database.inc(2315): DatabaseConnection-> query ('SELECT expire, ...', Array, Array)
3 / Applications / MAMP / htdocs / include / lock.inc (167): db_query ('SELECT expire, ...', Array)
4 /Applications/MAMP/htdocs/includes/lock.inc(146): lock_may_be_available ('theme_registry: ...' )
5 /Applications/MAMP/htdocs/includes/theme.inc(447): lock_acquire ('theme_registry: ...')
6 /Applications/MAMP/htdocs/includes/bootstrap.inc(427): ThemeRegistry-> set ( Szyk)
7 [funkcja wewnętrzna]: DrupalCacheArray -> __ destruct ()
8 {main} wrzucony do /Applications/MAMP/htdocs/include/database/database.inc w linii 2136
Mam problem z odczytaniem tych komunikatów o błędach. Czy ktoś mógłby mi pomóc zrozumieć, co się tutaj dzieje?
Ten błąd MySQL / MariaDB:
oznacza w zasadzie, że klient nie mógł wysłać pytania do serwera .
Może się to zdarzyć albo tymczasowa usterka, zbyt duże lub nieprawidłowe zapytanie SQL, błędna konfiguracja serwera lub ograniczenie dostawcy hostingu.
Zasadniczo ten błąd może wynikać z kilku rzeczy, takich jak:
zapytanie do serwera jest nieprawidłowe lub zbyt duże,
Rozwiązanie: Zwiększ
max_allowed_packet
zmienną .Uwaga: Upewnij się, że zmienna znajduje się w
[mysqld]
sekcji, a nie[mysql]
.Uwaga: Nie zapomnij zrestartować serwera MySQL / MariaDB.
Przekroczono limit czasu połączenia TCP / IP po stronie klienta.
Rozwiązanie: Zwiększ
wait_timeout
zmienną .Próbowano uruchomić zapytanie po zamknięciu połączenia z serwerem.
Rozwiązanie: Błąd logiczny w aplikacji powinien zostać poprawiony.
Wyszukiwanie nazw hosta nie powiodło się (np. Problem z serwerem DNS) lub serwer został uruchomiony z
--skip-networking
opcją.Inną możliwością jest to, że zapora blokuje port MySQL (np. Domyślnie 3306).
Bieżący wątek został zabity, więc spróbuj ponownie.
Wystąpił błąd, w wyniku którego serwer zmarł podczas wykonywania zapytania.
Klient działający na innym hoście nie ma niezbędnych uprawnień do połączenia.
I wiele innych, więc dowiedz się więcej na: B.5.2.9 Serwer MySQL odszedł .
Aby uzyskać więcej informacji, sprawdź MySQL lub logi systemowe (np
/var/log/messages
.).Aby debugować serwer lub klient MySQL, sprawdź: 26.5 Debugowanie i portowanie MySQL .
Jeśli próbujesz zaimportować bazę danych z pliku za pomocą polecenia
drush
lubmysql
, możesz:Dodaj opcję wymuszenia (
-f
),mysql
aby kontynuować i wykonać resztę zapytań.Jest to przydatne, jeśli baza danych zawiera duże zapytania związane z pamięcią podręczną, które są duże, ale i tak nie są istotne.
Za pomocą
drush
spróbuj:cat foo.sql | $(drush sqlconnect) -f
Spróbuj zastosować
--max-allowed-packet
opcję dlamysql
mniejszych wartości.Zwiększ
max_allowed_packet
iwait_timeout
w konfiguracji serwera (np~/.my.cnf
.).Zrzuć oryginalną bazę danych ponownie, używając
--skip-extended-insert
opcji, aby rozbić duże zapytania. Następnie zaimportuj plik ponownie.Zobacz także: BŁĄD 2006 (HY000): Serwer MySQL zniknął
źródło
Odpowiedź udzielona przez @Clive jest normalna, ale może być dodatkowa przyczyna, szczególnie w przypadku formularzy dodawania węzłów.
Formularze dodawania do węzłów są zwykle duże, a ich przetwarzanie może zużywać dużo pamięci (zwłaszcza jeśli podczas zapisywania przetwarzane jest dowolne zdjęcie, tak jak w przypadku modułów przycinania). Jeśli na serwerze zabraknie pamięci, proces mysqld może zostać zabity, co powoduje wyświetlenie tego samego komunikatu „zniknął”.
Chodzi o to, aby przejrzeć dzienniki serwera. Na komputerze CentOS możesz zobaczyć następujący wpis w / var / log / messages
Rozwiązaniem tutaj jest dodanie większej ilości pamięci RAM lub dodanie / zwiększenie wymiany.
źródło