Błąd bazy danych NextCloud po aktualizacji: co sprawdzić w pierwszej kolejności

Jeśli po aktualizacji Nextcloud zacznie wyświetlać wyjątek „Błąd bazy danych”, nextcloud.logprzed zmianą jakichkolwiek tabel sprawdź przyczynę błędu bazy danych. Najpierw przywróć połączenie z bazą danych; jeśli aktualizacja zatrzymała się w trakcie, dokończ ją poleceniem occ upgradei dopiero wtedy użyj udokumentowanych poleceń naprawy, gdy log to uzasadni.

Zidentyfikuj rzeczywistą awarię

Komunikat przeglądarki to objaw, a nie diagnoza. Nextcloud może nie być w stanie nawiązać połączenia z MySQL/MariaDB lub PostgreSQL, konto bazy danych może nie być uwierzytelniane lub kod aplikacji i schemat mogą znajdować się na różnych etapach aktualizacji. Oficjalne instrukcje rozwiązywania problemów Nextcloud zalecają dopasowanie identyfikatora nieudanego żądania do logu serwera.

  1. Rejestruj godzinę, pełny błąd przeglądarki i wszelkie wyświetlane identyfikatory żądań. Nie publikuj prywatnych wpisów w dzienniku bez usunięcia poufnych informacji i danych osobowych.
  2. Znajdź skonfigurowany katalog danych w config/config.php. Domyślny plik dziennika to data/nextcloud.log, ale niestandardowe wdrożenia mogą rejestrować dane w innym miejscu.
  3. W przypadku konwencjonalnej instalacji Linuksa sprawdź ostatnie wpisy, a następnie logi usługi bazy danych. Zastąp je swoją rzeczywistą ścieżką Nextcloud:
sudo tail -n 100 /var/www/nextcloud/data/nextcloud.log
sudo journalctl -u mariadb --since '30 minutes ago'

Drugie polecenie dotyczy tylko hosta z uruchomioną usługą MariaDB w systemie systemd; w przypadku innych wdrożeń należy użyć usługi PostgreSQL lub logów kontenera. Wyszukaj kod wyjątku SQLSTATEi pierwszą przyczynę związaną z bazą danych, zamiast polegać na ostatnim wierszu śladu stosu.

Wskazówka do dziennikaPierwsza przydatna kontrola
SQLSTATE[HY000] [2002]Proces bazy danych, nazwa hosta, port, ścieżka gniazda lub dostęp do pliku SQLite. Interpretację określa sterownik.
SQLSTATE[HY000] [1040]Wyczerpanie połączenia MySQL/MariaDB i aktywne sesje.
MySQL server has gone awayPonowne uruchomienia bazy danych, rozłączenia, obciążenie zasobów i logi serwera.
Uwierzytelnianie lub odmowa dostępuKonto bazy danych, hasło, dostęp do sieci i uprawnienia.
Brak tabeli, relacji lub kolumnyCzy aktualizacja bazy danych została ukończona i czy zainstalowany kod jest zgodny ze schematem.

Pierwsze trzy przykłady omówiono w udokumentowanych typowych błędach Nextcloud. Komunikat o brakującej tabeli nie oznacza pozwolenia na ręczne utworzenie tabeli: najpierw należy zidentyfikować dokładną przyczynę błędu migracji.

Przed zastosowaniem poprawki zabezpiecz instancję

Przed ponowną próbą migracji zachowaj odzyskiwalną kopię zapasową bazy danych wraz z konfiguracją i danymi Nextcloud. Oficjalna procedura tworzenia kopii zapasowych obejmuje również niestandardowe aplikacje i motywy, jeśli są dostępne. Upewnij się, że kopia zapasowa pochodzi z tego samego punktu w czasie; kopia zapasowa zawierająca tylko kod nie może odzyskać częściowo zmienionej bazy danych.

  • Jeśli to możliwe, wstrzymaj synchronizację i zadania w tle na czas odzyskiwania, zwłaszcza gdy konieczne jest zapisanie danych w bazie danych lub ich uaktualnienie.
  • Prowadź rejestr starych i nowych wersji Nextcloud, silnika/wersji bazy danych, wersji PHP i metody aktualizacji.
  • Nie usuwaj tabel bazy danych, nie importuj pustego schematu, nie uruchamiaj losowych poleceń SQL z forów ani nie przywracaj wielokrotnie tylko jednego komponentu kopii zapasowej składającej się z wielu części.

Poniższe polecenia zakładają standardową instalację Debiana/Ubuntu w [usunięto nazwę użytkownika /var/www/nextcloud], z www-datakontem na serwerze WWW. Uruchom occjako odpowiedni użytkownik HTTP; instalacje pakietów, Docker, Snap, AIO i zarządzane mają różne ścieżki i metody wykonywania. Dokumentacja poleceń occ wyjaśnia te wymagania.

Przywróć łączność z bazą danych przed migracją

Sprawdź usługę bazy danych i ustawienia połączenia Nextcloud

Jeśli logi wskazują na odmowę połączenia, niedostępne gniazdo lub niedostępny serwer, najpierw sprawdź, czy istniejąca usługa bazy danych działa. Są to alternatywne kontrole na poziomie hosta, a nie lista do wykonania bez rozróżnienia:

sudo systemctl status mariadb
sudo systemctl status postgresql

W przypadku oddzielnego serwera bazy danych sprawdź również DNS, reguły zapory sieciowej, wybrany port oraz dostępność sieci z hosta lub kontenera aplikacji Nextcloud. Sprawdź config/config.php, dbtype, dbhosti dbname. dbuserDokumentacja parametrów konfiguracji wyjaśnia nazwy hostów, porty i składnię gniazd Unix. Nigdy nie wklejaj dbpassworddo publicznych biletów ani poleceń powłoki, które ujawniają je w historii.

Jeśli podczas wdrażania zmieniono hasło do bazy danych lub dane uwierzytelniające, należy skorygować tę niezgodność, korzystając z przepływu pracy zarządzania hasłami. Jeśli serwer zgłasza zbyt wiele połączeń, należy sprawdzić aktywne połączenia i przyczynę ich kumulacji, zanim rozważy się zmiany w przepustowości. Polecenie indeksowania nie naprawi awarii połączenia.

Sprawdź zgodność środowiska wykonawczego po aktualizacji

Jednoczesna aktualizacja PHP lub serwera bazy danych może uszkodzić wcześniej działającą instalację. Porównaj docelową wersję NextCloud z jej oficjalnymi wymaganiami systemowymi i informacjami o wydaniu, zamiast zakładać, że wszystkie aktualnie zainstalowane wersje sterowników i serwerów są nadal obsługiwane. Według sprawdzonej dokumentacji NextCloud 35, obsługiwane są wersje PHP 8.3–8.5; akceptowane wersje baz danych są tam udokumentowane oddzielnie. Wcześniejsze wersje mają inne ograniczenia.

Upewnij się również, że sterownik bazy danych PHP wymagany przez wybrany silnik jest włączony zarówno w środowisku wiersza poleceń, jak i w środowisku PHP webowym. Nie obniżaj bezmyślnie wersji serwera bazy danych po migracji schematu: przywróć go tylko z kompatybilnego, spójnego planu kopii zapasowych.

Dokończ lub napraw przerwaną aktualizację NextCloud

Gdy baza danych będzie dostępna i kopia zapasowa zabezpieczona, przejdź do katalogu instalacyjnego Nextcloud i sprawdź jego stan:

cd /var/www/nextcloud
sudo -E -u www-data php occ status

Jeśli Nextcloud zgłosi, że aktualizacja jest w toku lub nieukończona, postępuj zgodnie ze ścieżką aktualizacji obsługiwaną dla zainstalowanej wersji źródłowej i docelowej. W przypadku konwencjonalnej instalacji ręcznej uruchom:

sudo -E -u www-data php occ upgrade

Nie przerywaj polecenia ani nie uruchamiaj procesów aktualizacji współbieżnej. Przeczytaj jego wynik: pomyślna migracja różni się od wyjątku połączenia z bazą danych. Dokumentacja ręcznej aktualizacji NextCloud wyraźnie zaleca, occ upgradekiedy proces internetowy się zatrzymuje i maintenance:repairczy ścieżka aktualizacji wymaga naprawy:

sudo -E -u www-data php occ maintenance:repair

Użyj maintenance:repairpo przeanalizowaniu błędu; nie zastępuje on naprawy błędnych danych uwierzytelniających, zatrzymanej bazy danych ani niezgodnego środowiska wykonawczego. Jeśli occ upgradewystąpi błąd podczas konkretnej migracji SQL, zapisz dokładny wyjątek i poszukaj rozwiązania dla konkretnej wersji lub przywróć całą dopasowaną kopię zapasową, zamiast eksperymentować z ręcznym DDL.

Obsługuj ostrzeżenia schematu tylko po pomyślnej aktualizacji

Niektóre migracje są celowo odkładane. Na działającej instancji panel administracyjny może poprosić o opcjonalne kolumny, indeksy lub klucze podstawowe. Poniższe polecenia zapewniają podgląd próbny, jeśli są obsługiwane przez daną wersję:

sudo -E -u www-data php occ db:add-missing-indices --dry-run
sudo -E -u www-data php occ db:add-missing-columns --dry-run
sudo -E -u www-data php occ db:add-missing-primary-keys --dry-run

Uruchom odpowiednie polecenie bez logowania --dry-runtylko wtedy, gdy wymaga tego zarejestrowany problem lub kontrola administracyjna, a proponowana zmiana została zweryfikowana. Te operacje konserwacyjne mogą być czasochłonne w przypadku dużych baz danych. NextCloud 35 dodatkowo dokumentuje db:schema:check; nie zakładaj, że istnieje ono w starszych gałęziach. Zapoznaj się z dokumentacją poleceń bazy danych , aby uzyskać informacje o zachowaniu specyficznym dla danej wersji.

Zweryfikuj odzyskiwanie i ponownie otwórz dostęp

  1. Powtórz sudo -E -u www-data php occ status. Sprawdź, czy zainstalowana wersja jest zgodna z zamierzonym wydaniem, czy aktualizacja nie jest wymagana i czy nie występuje nowy krytyczny wyjątek SQL.
  2. Jeżeli tryb konserwacji jest nadal włączony i aktualizacja zakończyła się pomyślnie , wyłącz go za pomocą sudo -E -u www-data php occ maintenance:mode --off.
  3. Otwórz WebGUI, zaloguj się, wyświetl listę plików i wykonaj niewielkie autoryzowane przesyłanie i pobieranie. nextcloud.logPodczas tych sprawdzeń obserwuj, czy nie pojawiły się nowe wyjątki w bazie danych.
  4. Wznów zaplanowane zadania i synchronizację klienta, a następnie sprawdź ustawienia administracyjne pod kątem pozostałych ostrzeżeń bazy danych.

Jeśli wystąpi ten sam wyjątek bazy danych, należy zatrzymać powtarzające się migracje i zebrać identyfikator żądania, tekst SQLSTATE, dziennik baza-serwer, parę wersji oraz nieudane occdane wyjściowe. Dowód ten określa, czy problem nadal występuje w przypadku łączności, niekompatybilnego oprogramowania, czy też konkretnej nieudanej migracji. Samo pomyślne logowanie nie jest dowodem na to, że każde zadanie w tle i zapytanie do bazy danych działają.

Zostaw komentarz

Przenieś dane z Nextcloud na dysk zewnętrzny bez naruszania pamięci masowej

Przenieś dane z Nextcloud na dysk zewnętrzny bez naruszania pamięci masowej

Bezpiecznie przenieś katalog danych Linux Nextcloud na dysk zewnętrzny, korzystając z trwałego montowania UUID, trybu konserwacji, zweryfikowanej kopii i dowiązania symbolicznego do ścieżki oryginalnej.

Błąd bazy danych NextCloud po aktualizacji: co sprawdzić w pierwszej kolejności

Przywróć dostęp do Nextcloud po aktualizacji, diagnozując błędy SQL, sprawdzając łączność z bazą danych i bezpiecznie kończąc przerwane migracje.

Zresetuj utracone hasło administratora NextCloud za pomocą OCC

Użyj polecenia OCC usługi Nextcloud, aby zresetować hasło administratora z poziomu powłoki serwera. Znajdziesz tam wskazówki dotyczące nazw użytkowników, uprawnień i zewnętrznych dostawców logowania.

Dodaj nagłówek HSTS w punkcie końcowym HTTPS obsługującym Nextcloud

Wyczyść ostrzeżenie HSTS usługi Nextcloud, ustawiając nagłówek na serwerze Apache, NGINX lub serwerze proxy TLS, a następnie bezpiecznie zweryfikuj publiczną odpowiedź HTTPS.

Rozwiązywanie problemów z instalacjami aplikacji NextCloud, które zgłaszają brak połączenia z Internetem

Rozwiązywanie problemów z instalacjami aplikacji NextCloud, które zgłaszają brak połączenia z Internetem

Śledź błędy instalacji App Store, aby wykryć problemy z DNS, HTTPS, serwerem proxy, TLS lub konfiguracją na samym serwerze Nextcloud.

Podgląd Tame Nextcloud powoduje skoki obciążenia procesora w przypadku zaplanowanej kolejki

Przenieś pracę nad miniaturami do kontrolowanego harmonogramu w tle, zmniejsz nieużywane rozmiary podglądu i zweryfikuj kolejkę bez przeciążania serwera Nextcloud.

Uzyskaj synchronizację pulpitu Nextcloud, wykraczającą poza „przetwarzanie plików”

Znajdź plik, regułę wykluczenia, problem z połączeniem lub stan bazy danych klienta, który blokuje synchronizację z Nextcloud, a następnie sprawdź bezpieczeństwo przesyłania i pobierania.

Wyczyść ostrzeżenie Nextcloud OPcache, dostosowując prawy limit

Znajdź limit PHP OPcache powodujący ostrzeżenie Nextcloud, zaktualizuj prawidłową konfigurację PHP w przeglądarce, uruchom ponownie system bezpiecznie i sprawdź wynik.

Połączenie Nextcloud z CODE Docker: konfiguracja i kompromisy

Połączenie Nextcloud z CODE Docker: konfiguracja i kompromisy

Porównaj wbudowany KOD i KOD oparty na Dockerze, a następnie połącz Collabora Online z Nextcloud za pomocą bezpiecznego odwrotnego serwera proxy HTTPS.

Zbuduj odporny klaster Nextcloud z Galera

Zaplanuj niezawodne wdrożenie Nextcloud HA z współdzieloną pamięcią masową, blokowaniem Redis, routingiem MariaDB uwzględniającym kworum i praktycznymi kontrolami awaryjnymi.