Właśnie uaktualniłem do nowej wersji Owncloud. Po zainstalowaniu pakietu .deb uruchomiłem
sudo -u www-data php /var/www/owncloud/occ upgrade
co dało mi:
oc_appconfig
1/24 [=>--------------------------] 4%Doctrine\DBAL\Exception\DriverException: An exception occurred while executing 'SET unique_checks=1':
SQLSTATE[HY000]: General error: 2006 MySQL server has gone away
Update failed
Badanie online wykazało, że prawdopodobnie był to problem przekroczenia limitu czasu MySQL, dlatego utworzyłem /etc/mysql/my.cnf
następującą treść:
[mysqld]
interactive_timeout=86400
wait_timeout=86400
max_allowed_packet=521M
Następnie zrestartowałem MySQL i ponowiłem próbę - bezskutecznie. W większości przypadków krok 1 kończy się niepowodzeniem; czasami dochodzę do kroku 3 (zawsze z tym samym limitem czasu komendy SQL).
System operacyjny to Raspbian, działający na Raspberry Pi 3.
Co naprawi ten problem?
Komunikat o błędzie
może oznaczać kilka rzeczy: Często odnosi się do limitu czasu, który można skorygować poprzez zwiększenie wartości limitu czasu (domyślnie jest to 8 godzin) lub wskazuje, że dozwolony rozmiar pakietu został przekroczony, co można poprawić przez zwiększenie
max_allowed_packet
. Dzieje się tak również wtedy, gdy serwer MySQL ulega awarii w trakcie operacji , więc sprawdź, czy dwie pierwsze opcje nie przynoszą ulgi.Po kilku dalszych badaniach zajrzałem do dziennika MySQL. Nazwano pusty plik
/var/log/mysql.err
, a także niektóre pliki wskazujące rotację dziennika.Uruchomienie
ps -ef | grep mysql
następnie dało mi pełny wiersz komend dla procesu MySQL, z parametrem pliku dziennika, który okazał się być/var/lib/mysql/<hostname>.err
.Analiza tego pliku wykazała, że MySQL ciągle się zawieszał z powodu uszkodzenia danych, prawdopodobnie wpływając na
oc_filecache
tabelę. To wyjaśnia, dlaczego aktualizacja się nie powiodła - osobne pytanie będzie można rozwiązać po uszkodzeniu . Łańcuch wyświetlany przez occ nad paskiem postępu wydaje się być tabelą przetwarzaną w momencie wystąpienia błędu (jeśli nie jest to jasne z dzienników MySQL, gdzie należy przyjrzeć się bliżej, aby znaleźć tabelę).źródło