Nextcloud-databasefout na een update: wat moet je eerst controleren?

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.

  1. Noteer de tijd, de volledige browserfout en eventuele weergegeven aanvraag-ID. Publiceer geen privélogboeken zonder geheimen en persoonlijke informatie te verwijderen.
  2. Zoek de geconfigureerde gegevensmap in config/config.php. Het standaard logbestand is data/nextcloud.log, maar aangepaste implementaties kunnen elders logbestanden opslaan.
  3. 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 aanwijzingEerste 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 awayDatabaseherstarts, verbroken verbindingen, resourcedruk en serverlogboeken.
Authenticatie of toegang geweigerdDatabaseaccount, wachtwoord, netwerktoegang en machtigingen.
Ontbrekende tabel, relatie of kolomOf 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.

  1. 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.
  2. 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.
  3. 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.
  4. 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.

Laat een reactie achter

Verplaats Nextcloud-gegevens naar een externe schijf zonder de opslag te beschadigen.

Verplaats Nextcloud-gegevens naar een externe schijf zonder de opslag te beschadigen.

Verplaats een Nextcloud-gegevensmap op Linux veilig naar een externe schijf met behulp van een permanente UUID-mount, de onderhoudsmodus, een geverifieerde kopie en de symbolische link naar het oorspronkelijke pad.

Nextcloud-databasefout na een update: wat moet je eerst controleren?

Herstel de toegang tot Nextcloud na een update door SQL-fouten te diagnosticeren, de databaseverbinding te controleren en onderbroken migraties veilig af te ronden.

Een verloren Nextcloud-beheerderswachtwoord opnieuw instellen met OCC

Gebruik de OCC-opdracht van Nextcloud om een ​​beheerderswachtwoord opnieuw in te stellen vanuit de servershell. Hieronder vindt u instructies voor gebruikersnamen, machtigingen en externe aanmeldingsproviders.

Voeg de HSTS-header toe aan het HTTPS-eindpunt dat Nextcloud serveert.

Verwijder de HSTS-waarschuwing van Nextcloud door de header in te stellen bij Apache, NGINX of uw TLS-proxy, en verifieer vervolgens veilig het openbare HTTPS-antwoord.

Problemen oplossen met Nextcloud-app-installaties die melden dat er geen internetverbinding is

Problemen oplossen met Nextcloud-app-installaties die melden dat er geen internetverbinding is

Traceer installatiefouten in de App Store naar DNS-, HTTPS-, proxy-, TLS- of configuratieproblemen op de Nextcloud-server zelf.

Beheers de CPU-pieken van Nextcloud Preview met een geplande wachtrij.

Verplaats het genereren van miniaturen naar een gecontroleerd achtergrondschema, verklein ongebruikte voorbeeldformaten en controleer de wachtrij zonder uw Nextcloud-server te overbelasten.

Nextcloud Desktop Sync: Voorbij het "Bestanden verwerken"-scherm

Zoek naar het bestand, de uitsluitingsregel, het verbindingsprobleem of de status van de clientdatabase die de Nextcloud-synchronisatie blokkeert, en controleer vervolgens of uploads en downloads veilig verlopen.

Verwijder de Nextcloud OPcache-waarschuwing door de rechterlimiet aan te passen.

Zoek de PHP OPcache-limiet die de waarschuwing van Nextcloud veroorzaakt, werk de juiste web-PHP-configuratie bij, herstart de server veilig en controleer het resultaat.

Nextcloud verbinden met CODE Docker: installatie en afwegingen

Nextcloud verbinden met CODE Docker: installatie en afwegingen

Vergelijk de ingebouwde en op Docker gebaseerde code en verbind Collabora Online vervolgens met Nextcloud via een beveiligde HTTPS-reverseproxy.

Bouw een robuust Nextcloud-cluster met Galera

Plan een betrouwbare Nextcloud HA-implementatie met gedeelde opslag, Redis-vergrendeling, quorum-bewuste MariaDB-routering en praktische failover-controles.