Wenn Nextcloud nach einem Update eine „Datenbankfehler“-Ausnahme anzeigt, prüfen Sie den zugrunde liegenden Datenbankfehler, nextcloud.logbevor Sie Tabellen ändern. Stellen Sie zuerst die Datenbankverbindung wieder her. Falls das Update zwischenzeitlich abgebrochen wurde, führen Sie es mit dem Befehl `npm run dev` fort occ upgradeund verwenden Sie erst dann die dokumentierten Reparaturbefehle, wenn die Protokolle dies rechtfertigen.
Identifizieren Sie den tatsächlichen Fehler
Die Browsermeldung ist ein Symptom, keine Diagnose. Nextcloud kann möglicherweise nicht auf MySQL/MariaDB oder PostgreSQL zugreifen, das Datenbankkonto kann sich nicht mehr authentifizieren oder Anwendungscode und Schema befinden sich in unterschiedlichen Aktualisierungsstadien. Die offizielle Fehlerbehebungshilfe von Nextcloud empfiehlt, die ID der fehlgeschlagenen Anfrage mit dem Serverprotokoll abzugleichen.
- Protokollieren Sie die Uhrzeit, die vollständige Browserfehlermeldung und die angezeigte Anfrage-ID. Veröffentlichen Sie keine privaten Protokolleinträge, ohne Geheimnisse und persönliche Informationen zu entfernen.
- Das konfigurierte Datenverzeichnis finden Sie unter
config/config.php. Die Standardprotokolldatei ist data/nextcloud.log, aber bei benutzerdefinierten Bereitstellungen werden die Protokolle möglicherweise an einem anderen Ort gespeichert.
- Bei einer herkömmlichen Linux-Installation überprüfen Sie die letzten Einträge und anschließend die Protokolle des Datenbankdienstes. Ersetzen Sie durch Ihren tatsächlichen Nextcloud-Pfad:
sudo tail -n 100 /var/www/nextcloud/data/nextcloud.log
sudo journalctl -u mariadb --since '30 minutes ago'
Der zweite Befehl gilt nur für Hosts, auf denen MariaDB unter systemd ausgeführt wird. Verwenden Sie für andere Bereitstellungen die PostgreSQL-Dienst- oder Containerprotokolle. Suchen Sie nach dem Ausnahmecode SQLSTATEund der ersten datenbankbezogenen Ursache, anstatt sich auf die letzte Zeile des Stack-Traces zu verlassen.
| Protokollhinweis | Erste nützliche Überprüfung |
SQLSTATE[HY000] [2002] | Datenbankprozess, Hostname, Port, Socket-Pfad oder SQLite-Dateizugriff; der Treiber bestimmt die Interpretation. |
SQLSTATE[HY000] [1040] | Erschöpfung der MySQL/MariaDB-Verbindungen und aktiven Sitzungen. |
MySQL server has gone away | Datenbankneustarts, Verbindungsabbrüche, Ressourcenengpässe und Serverprotokolle. |
| Authentifizierung oder Zugriff verweigert | Datenbankkonto, Passwort, Netzwerkzugriff und Berechtigungen. |
| Fehlende Tabelle, Relation oder Spalte | Ob das Datenbank-Upgrade abgeschlossen wurde und ob der installierte Code mit dem Schema übereinstimmt. |
Die ersten drei Beispiele werden in der Dokumentation häufiger Nextcloud-Fehler behandelt. Eine Fehlermeldung bezüglich einer fehlenden Tabelle bedeutet nicht, dass Sie die Tabelle manuell erstellen dürfen: Ermitteln Sie zunächst den genauen Migrationsfehler.
Schützen Sie die Instanz, bevor Sie eine Korrektur anwenden.
Bevor Sie Migrationen wiederholen, erstellen Sie unbedingt ein wiederherstellbares Backup Ihrer Datenbank inklusive Nextcloud-Konfiguration und -Daten. Das offizielle Backup-Verfahren sichert gegebenenfalls auch benutzerdefinierte Apps und Themes. Stellen Sie sicher, dass das Backup denselben Zeitpunkt erfasst hat; ein reines Code-Backup kann eine teilweise geänderte Datenbank nicht wiederherstellen.
- Unterbrechen Sie nach Möglichkeit während eines Wiederherstellungsfensters Synchronisierungs- und Hintergrundprozesse, insbesondere wenn Datenbankschreibvorgänge oder -aktualisierungen anstehen.
- Halten Sie die alten und neuen Nextcloud-Versionen, die Datenbank-Engine/Version, die PHP-Version und die Aktualisierungsmethode fest.
- Löschen Sie keine Datenbanktabellen, importieren Sie kein leeres Schema, führen Sie keine zufälligen SQL-Abfragen aus Foren aus und stellen Sie nicht wiederholt nur eine Komponente eines mehrteiligen Backups wieder her.
Die folgenden Befehle setzen eine Standardinstallation von Debian/Ubuntu unter `/var/www/debian/` voraus /var/www/nextcloud, wobei `/var/www/debian/ www-data` als Webserver-Benutzerkonto verwendet wird. Führen Sie die Befehle occals der entsprechende HTTP-Benutzer aus; Paket-, Docker-, Snap-, AIO- und verwaltete Installationen verwenden andere Pfade und Ausführungsmethoden. Die Referenz zum Befehl `occ` erläutert diese Anforderungen.
Datenbankverbindung vor der Migration wiederherstellen
Überprüfen Sie die Datenbankdienst- und Nextcloud-Verbindungseinstellungen.
Wenn die Protokolle eine Verbindungsverweigerung, einen nicht erreichbaren Socket oder einen nicht verfügbaren Server anzeigen, überprüfen Sie zunächst, ob der vorhandene Datenbankdienst ausgeführt wird. Dies sind alternative Prüfungen auf Hostebene und keine Liste, die wahllos ausgeführt werden sollte:
sudo systemctl status mariadb
sudo systemctl status postgresql
Prüfen Sie bei einem separaten Datenbankserver zusätzlich DNS, Firewall-Regeln, den gewählten Port und die Netzwerkerreichbarkeit vom Nextcloud-Anwendungshost bzw. -Container aus. Achten Sie config/config.phpauf die Parameter `<hostname> dbtype`, dbhost` <port> dbname` , `<socket>` und `<socket>`. dbuserDie Referenz der Konfigurationsparameter erläutert Hostnamen, Ports und die Unix-Socket-Syntax. Fügen Sie diese niemals in öffentliche Tickets oder Shell-Befehle ein dbpassword, die diese im Verlauf preisgeben.
Wurde während der Bereitstellung ein Datenbankpasswort geändert oder wurden die Zugangsdaten angepasst, beheben Sie diese Diskrepanz mithilfe Ihres Workflows zur Geheimnisverwaltung. Meldet der Server zu viele Verbindungen, prüfen Sie die aktiven Verbindungen und die Ursache der Verbindungsanhäufung, bevor Sie Kapazitätsänderungen in Betracht ziehen. Ein Indexierungsbefehl behebt einen Verbindungsabbruch nicht.
Überprüfen Sie die Laufzeitkompatibilität nach dem Update.
Ein gleichzeitiges PHP- oder Datenbankserver-Upgrade kann eine zuvor funktionierende Installation beschädigen. Vergleichen Sie die Zielversion von Nextcloud mit ihren offiziellen Systemanforderungen und Versionshinweisen, anstatt davon auszugehen, dass alle aktuell installierten Treiber- und Serverversionen weiterhin unterstützt werden. Laut der geprüften Nextcloud-35-Dokumentation werden PHP 8.3–8.5 unterstützt; die unterstützten Datenbankversionen sind dort separat dokumentiert. Frühere Versionen haben andere Einschränkungen.
Stellen Sie außerdem sicher, dass der für Ihre gewählte Engine benötigte PHP-Datenbanktreiber sowohl in der Kommandozeilen- als auch in der Web-PHP-Umgebung aktiviert ist. Führen Sie nach einer Schema-Migration kein Downgrade des Datenbankservers durch: Stellen Sie die Datenbank nur aus einem kompatiblen, konsistenten Backup wieder her.
Schließen Sie das unterbrochene Nextcloud-Upgrade ab oder reparieren Sie es.
Sobald die Datenbank erreichbar ist und ein Backup erstellt wurde, wechseln Sie in das Nextcloud-Installationsverzeichnis und überprüfen Sie dessen Status:
cd /var/www/nextcloud
sudo -E -u www-data php occ status
Wenn Nextcloud meldet, dass ein Upgrade aussteht oder unvollständig ist, folgen Sie dem unterstützten Upgrade-Pfad für die installierten Quell- und Zielversionen. Führen Sie für eine herkömmliche manuelle Installation Folgendes aus:
sudo -E -u www-data php occ upgrade
Unterbrechen Sie den Befehl nicht und führen Sie keine parallelen Aktualisierungsprozesse aus. Lesen Sie die Ausgabe: Eine erfolgreiche Migration unterscheidet sich von einer Datenbankverbindungsausnahme. Die Dokumentation zur manuellen Aktualisierung von Nextcloud gibt explizite Empfehlungen, occ upgradewann der webbasierte Prozess hängen bleibt und maintenance:repairob der Aktualisierungspfad repariert werden muss.
sudo -E -u www-data php occ maintenance:repair
Verwenden Sie maintenance:repairdiese Methode erst nach der Fehleranalyse. Sie ersetzt nicht die Behebung fehlerhafter Anmeldeinformationen, einer angehaltenen Datenbank oder einer tatsächlich inkompatiblen Laufzeitumgebung. Wenn occ upgradeeine bestimmte SQL-Migration fehlschlägt, speichern Sie die genaue Ausnahme und suchen Sie nach einer versionsspezifischen Lösung oder stellen Sie das vollständige, passende Backup wieder her, anstatt mit manuellem DDL zu experimentieren.
Schemawarnungen sollten erst nach einem erfolgreichen Upgrade behandelt werden.
Manche Migrationen werden absichtlich verzögert. Auf einer laufenden Instanz kann die Administratorübersicht nach optionalen Spalten, Indizes oder Primärschlüsseln fragen. Die folgenden Befehle bieten eine Testvorschau, sofern sie von der jeweiligen Version unterstützt werden:
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
Führen Sie den entsprechenden Befehl --dry-runnur dann aus, wenn das protokollierte Problem oder die administrative Prüfung dies erfordert und die vorgeschlagene Änderung geprüft wurde. Diese Wartungsarbeiten können bei großen Datenbanken einige Zeit in Anspruch nehmen. Nextcloud 35 dokumentiert dies zusätzlich db:schema:check; gehen Sie nicht davon aus, dass es in älteren Versionen vorhanden ist. Informationen zum versionsspezifischen Verhalten finden Sie in der Datenbankbefehlsreferenz .
Wiederherstellung prüfen und Zugriff wiederherstellen
- Wiederholen Sie den Vorgang
sudo -E -u www-data php occ status. Stellen Sie sicher, dass die installierte Version mit der gewünschten Version übereinstimmt, kein Upgrade erforderlich ist und keine neue schwerwiegende SQL-Ausnahme auftritt.
- Wenn der Wartungsmodus noch aktiviert ist und das Upgrade erfolgreich abgeschlossen wurde , deaktivieren Sie ihn mit
sudo -E -u www-data php occ maintenance:mode --off.
- Öffnen Sie die WebGUI, melden Sie sich an, listen Sie die Dateien auf und führen Sie einen kleinen autorisierten Upload und Download durch. Achten Sie
nextcloud.logwährend dieser Prüfungen auf neue Datenbankausnahmen.
- Setzen Sie die geplanten Jobs und die Client-Synchronisierung fort und überprüfen Sie anschließend die Administrationseinstellungen auf verbleibende Datenbankwarnungen.
Tritt derselbe Datenbankfehler erneut auf, stoppen Sie wiederholte Migrationen und erfassen Sie die Anforderungs-ID, den SQLSTATE-Text, das Datenbankserverprotokoll, das Versionspaar und die fehlerhafte occAusgabe. Anhand dieser Informationen lässt sich feststellen, ob das verbleibende Problem auf Verbindungsprobleme, inkompatible Software oder eine bestimmte fehlgeschlagene Migration zurückzuführen ist. Eine erfolgreiche Anmeldung allein beweist nicht, dass alle Hintergrundprozesse und Datenbankabfragen funktionieren.