Das Owncloud-Upgrade schlägt mit dem MySQL-Timeout fehl

519
user149408

Ich habe gerade ein Upgrade auf eine neue Owncloud-Version durchgeführt. Nach der Installation des .deb-Pakets bin ich gestartet

sudo -u www-data php /var/www/owncloud/occ upgrade 

was gab mir:

 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 

Eine Online-Recherche ergab, dass es sich möglicherweise um ein MySQL-Timeout-Problem handelt. Daher habe ich /etc/mysql/my.cnfFolgendes mit folgendem Inhalt erstellt:

[mysqld] interactive_timeout=86400 wait_timeout=86400 max_allowed_packet=521M 

Dann habe ich MySQL neu gestartet und es erneut versucht - ohne Erfolg. Meistens scheitert Schritt 1; manchmal komme ich bis zu schritt 3 (immer mit dem gleichen SQL-Befehl aus).

OS ist Raspbian und läuft auf einem Raspberry Pi 3.

Was wird dieses Problem beheben?

-1

2 Antworten auf die Frage

0
Overmind

Der Server hat wahrscheinlich ein falsches oder zu großes Paket verworfen. Wenn mysqld ein zu großes oder falsches Paket erhält, wird davon ausgegangen, dass beim Client ein Fehler aufgetreten ist, und die Verbindung wird getrennt. Um dies zu beheben, müssen Sie die maximale Paketgrößenbegrenzung max_allowed_packetin der Datei my.cnf erhöhen und anschließend den MySQL-Server neu starten: (/etc/init.d/mysql restart).

Dies ist eine häufige Ursache für den oben beschriebenen Fehler, war aber hier nicht der Fall (siehe meine Antwort unten). Wörtlich bedeutet die Fehlermeldung, dass der Server nicht mehr reagiert - er hat die Anforderung möglicherweise gelöscht oder ist abgestürzt. Möglicherweise wurde die Netzwerkverbindung unterbrochen oder andere. user149408 vor 6 Jahren 0
Ein Absturz sollte jedoch im Vergleich zum Schließen einer Verbindung besser erkennbar sein. Links sind auch leicht zu erkennen, wenn sie unterbrechen. Overmind vor 6 Jahren 0
-1
user149408

The error message

SQLSTATE[HY000]: General error: 2006 MySQL server has gone away

can mean a couple of things: Often it refers to a timeout, which can be rectified by increasing the timeout values (default is 8 hours), or indicates that the allowed packet size was exceeded, which can be corrected by increasing max_allowed_packet. It also occurs when the MySQL server crashes in the middle of the operation, so check for that when the first two options provide no relief.

After some more research, I consulted the MySQL log. There was an empty file named/var/log/mysql.err, as well as some files which indicate log rotation.

Running ps -ef | grep mysql then gave me the full command line for the MySQL process, with a parameter for the log file, which turned out to be /var/lib/mysql/<hostname>.err.

Examining this file revealed that MySQL kept crashing due to data corruption, probably affecting the oc_filecache table. This explains why the update failed—how to recover from the corruption will be a separate question. The string displayed by occ above the progress bar seems to be the table which was being processed when the error occurred (if that is unclear from the MySQL logs, where one needs to look close to find the table).