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.
- 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.
- 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.
- 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 dziennika | Pierwsza 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 away | Ponowne uruchomienia bazy danych, rozłączenia, obciążenie zasobów i logi serwera. |
| Uwierzytelnianie lub odmowa dostępu | Konto bazy danych, hasło, dostęp do sieci i uprawnienia. |
| Brak tabeli, relacji lub kolumny | Czy 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
- 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.
- 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.
- 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.
- 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ą.