Als Nextcloud na een update een "Databasefout"-uitzondering weergeeft, controleer dan de onderliggende databasefout nextcloud.logvoordat u tabellen wijzigt. Herstel eerst de databaseverbinding; als de update halverwege is gestopt, voltooi deze dan met occ upgradeen gebruik pas daarna de gedocumenteerde herstelopdrachten wanneer de logboeken dit rechtvaardigen.
Identificeer de daadwerkelijke oorzaak van de fout.
Het browserbericht is een symptoom, geen diagnose. Nextcloud kan mogelijk geen verbinding maken met MySQL/MariaDB of PostgreSQL, het databaseaccount kan mogelijk niet meer worden geverifieerd, of de applicatiecode en het schema bevinden zich mogelijk in verschillende upgradefasen. De officiële handleiding voor probleemoplossing van Nextcloud raadt aan om de ID van het mislukte verzoek te vergelijken met het serverlogboek.
- Noteer de tijd, de volledige browserfout en eventuele weergegeven aanvraag-ID. Publiceer geen privélogboeken zonder geheimen en persoonlijke informatie te verwijderen.
- Zoek de geconfigureerde gegevensmap in
config/config.php. Het standaard logbestand is data/nextcloud.log, maar aangepaste implementaties kunnen elders logbestanden opslaan.
- Controleer bij een standaard Linux-installatie de recente vermeldingen en vervolgens de logbestanden van de databaseservice. Vervang dit door het pad naar uw eigen Nextcloud-omgeving:
sudo tail -n 100 /var/www/nextcloud/data/nextcloud.log
sudo journalctl -u mariadb --since '30 minutes ago'
Het tweede commando is alleen van toepassing op een host waarop MariaDB onder systemd draait; gebruik de PostgreSQL-service of containerlogboeken voor andere implementaties. Zoek naar de uitzonderingscode SQLSTATEen de eerste databasegerelateerde oorzaak in plaats van af te gaan op de laatste regel van de stacktrace.
| Logboek aanwijzing | Eerste nuttige controle |
SQLSTATE[HY000] [2002] | Databaseproces, hostnaam, poort, socketpad of toegang tot een SQLite-bestand; de driver bepaalt de interpretatie. |
SQLSTATE[HY000] [1040] | Uitputting van MySQL/MariaDB-verbindingen en actieve sessies. |
MySQL server has gone away | Databaseherstarts, verbroken verbindingen, resourcedruk en serverlogboeken. |
| Authenticatie of toegang geweigerd | Databaseaccount, wachtwoord, netwerktoegang en machtigingen. |
| Ontbrekende tabel, relatie of kolom | Of de database-upgrade is voltooid en of de geïnstalleerde code overeenkomt met het schema. |
De eerste drie voorbeelden worden behandeld in de documentatie van Nextcloud over veelvoorkomende fouten. Een bericht over een ontbrekende tabel betekent niet dat u toestemming krijgt om de tabel handmatig aan te maken: achterhaal eerst de precieze oorzaak van de migratiefout.
Beveilig het exemplaar voordat u een oplossing toepast.
Voordat u de migraties opnieuw probeert uit te voeren, dient u een herstelbare databaseback-up te maken, samen met de configuratie en gegevens van Nextcloud. De officiële back-upprocedure omvat ook aangepaste apps en thema's, indien aanwezig. Controleer of de back-up van hetzelfde tijdstip is; een back-up die alleen de code bevat, kan een gedeeltelijk gewijzigde database niet herstellen.
- Pauzeer synchronisatie- en achtergrondtaken waar mogelijk tijdens een herstelperiode, vooral wanneer er databaseschrijfbewerkingen of -upgrades plaatsvinden.
- Houd een overzicht bij van de oude en nieuwe Nextcloud-versies, de database-engine/versie, de PHP-versie en de update-methode.
- Verwijder geen databasetabellen, importeer geen leeg schema, voer geen willekeurige SQL-query's uit van forums en herstel niet herhaaldelijk slechts één onderdeel van een back-up die uit meerdere delen bestaat.
De onderstaande commando's gaan uit van een standaard Debian/Ubuntu-installatie op /var/www/nextcloud, met www-dataals webserveraccount. Voer de commando's uit occals de juiste HTTP-gebruiker; pakket-, Docker-, Snap-, AIO- en beheerde installaties hebben andere paden en uitvoeringsmethoden. De occ-commandoreferentie legt deze vereisten uit.
Herstel de databaseverbinding voordat u migreert.
Controleer de databaseservice en de Nextcloud-verbindingsinstellingen.
Als de logbestanden een verbindingsweigering, een onbereikbare socket of een niet-beschikbare server weergeven, controleer dan eerst of de bestaande databaseservice actief is. Dit zijn alternatieve controles op hostniveau, geen lijst die je lukraak moet uitvoeren:
sudo systemctl status mariadb
sudo systemctl status postgresql
Controleer voor een aparte databaseserver ook de DNS, firewallregels, de geselecteerde poort en de netwerkbereikbaarheid vanaf de Nextcloud-applicatiehost of -container. Inspecteer config/config.phpop dbtype, dbhost, dbname, en dbuser. De configuratieparameterreferentie legt hostnamen, poorten en Unix-socketsyntaxis uit. Plak deze nooit dbpasswordin openbare tickets of shellopdrachten die ze in de geschiedenis weergeven.
Als een databasewachtwoord is gewijzigd of de inloggegevens zijn aangepast tijdens de implementatie, corrigeer die discrepantie dan met behulp van uw workflow voor geheimbeheer. Als de server te veel verbindingen meldt, controleer dan de actieve verbindingen en de oorzaak van de opeenhoping van verbindingen voordat u capaciteitswijzigingen overweegt. Een indexopdracht zal een verbindingsprobleem niet oplossen.
Controleer de runtime-compatibiliteit na de update.
Een gelijktijdige upgrade van PHP of de databaseserver kan een eerder werkende installatie onbruikbaar maken. Vergelijk de Nextcloud-release die u wilt installeren met de officiële systeemvereisten en release-opmerkingen, in plaats van ervan uit te gaan dat elke momenteel geïnstalleerde driver- en serverversie nog steeds wordt ondersteund. Volgens de geraadpleegde Nextcloud 35-documentatie wordt PHP 8.3–8.5 ondersteund; de geaccepteerde databaseversies worden daar apart beschreven. Eerdere releases hebben andere beperkingen.
Controleer ook of het PHP-databasestuurprogramma dat vereist is voor de door u gekozen database-engine, is ingeschakeld in zowel de PHP-opdrachtregelomgeving als de webomgeving. Downgrade de databaseserver niet zomaar na een schema-migratie: herstel alleen vanuit een compatibel en consistent back-upplan.
Voltooi of herstel de onderbroken Nextcloud-upgrade.
Zodra de database bereikbaar is en er een back-up is gemaakt, ga dan naar de installatiemap van Nextcloud en controleer de status ervan:
cd /var/www/nextcloud
sudo -E -u www-data php occ status
Als Nextcloud meldt dat een upgrade in behandeling is of onvoltooid is, volg dan het aanbevolen upgradepad voor de geïnstalleerde bron- en doelversies. Voor een conventionele handmatige installatie voert u het volgende commando uit:
sudo -E -u www-data php occ upgrade
Onderbreek de opdracht niet en voer geen gelijktijdige upgrade-processen uit. Lees de uitvoer: een succesvolle migratie is iets anders dan een databaseverbindingsfout. De documentatie voor handmatige upgrades van Nextcloud geeft expliciet aan occ upgradewanneer het webgebaseerde proces vastloopt en maintenance:repairof het upgradepad moet worden hersteld.
sudo -E -u www-data php occ maintenance:repair
Gebruik deze oplossing maintenance:repairpas na analyse van de fout; het is geen vervanging voor het herstellen van onjuiste inloggegevens, een vastgelopen database of een daadwerkelijk incompatibele runtime. Als occ upgradede fout optreedt bij een specifieke SQL-migratie, sla dan de exacte uitzondering op en zoek naar een versie-specifieke oplossing of herstel de volledige overeenkomende back-up in plaats van te experimenteren met handmatige DDL.
Schema-waarschuwingen pas afhandelen na een succesvolle upgrade.
Sommige migraties worden opzettelijk uitgesteld. Op een functionerende instantie kan het beheerdersoverzicht vragen om optionele kolommen, indexen of primaire sleutels. Deze commando's bieden een voorbeeld van een testrun, indien ondersteund door de betreffende versie:
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
Voer de bijbehorende opdracht --dry-runalleen uit als het geregistreerde probleem of de beheercontrole dit vereist en de voorgestelde wijziging is beoordeeld. Deze onderhoudswerkzaamheden kunnen tijdrovend zijn bij grote databases. Nextcloud 35 documenteert dit ook db:schema:check; ga er niet vanuit dat het in oudere versies aanwezig is. Raadpleeg de databaseopdrachtreferentie voor versiespecifiek gedrag.
Controleer het herstel en heropen de toegang.
- Herhaal dit
sudo -E -u www-data php occ status. Controleer of de geïnstalleerde versie overeenkomt met de beoogde release, of er geen upgrade nodig is en of er geen nieuwe fatale SQL-uitzondering optreedt.
- Als de onderhoudsmodus nog steeds is ingeschakeld en de upgrade succesvol is voltooid , kunt u deze uitschakelen met
sudo -E -u www-data php occ maintenance:mode --off.
- Open de webinterface, meld u aan, toon de bestanden en voer een kleine geautoriseerde upload en download uit. Let
nextcloud.logtijdens deze controles op nieuwe uitzonderingen in de database.
- Hervat de geplande taken en de clientsynchronisatie en controleer vervolgens de beheerdersinstellingen op eventuele resterende databasewaarschuwingen.
Als dezelfde databasefout zich opnieuw voordoet, stop dan de herhaalde migraties en verzamel de aanvraag-ID, de SQLSTATE-tekst, het databaseserverlogboek, het versiepaar en de occuitvoer van de fout. Aan de hand van deze gegevens kunt u bepalen of het resterende probleem te maken heeft met connectiviteit, incompatibele software of een specifieke mislukte migratie. Een succesvolle aanmelding alleen is geen bewijs dat elke achtergrondtaak en databasequery correct werkt.