Kennisbank

1.000 veelgestelde vragen, 500 tutorials en uitlegvideo's. Hier vind je alleen maar oplossingen!

Gebruik weergaven, triggers, opgeslagen procedures en routines

Deze handleiding beschrijft de beschikbare functies voor het beheren van relationele databases op de hostingpakketten van Infomaniak.

 

Gebruik van views, triggers, opgeslagen procedures en routines

Wat het beheren van relationele databases betreft, is de functie voor views standaard beschikbaar, zodat gebruikers views kunnen maken om het beheer en de weergave van de gegevens te vereenvoudigen.

Sommige geavanceerde functies, die een fijnere en complexere gegevensmanipulatie mogelijk maken, zoals…

  • Triggers
  • opgeslagen procedures (“stored procedures”)
  • routines
  • en het maken van functies

… zijn echter alleen beschikbaar op cloudservers.

Ze zijn niet toegestaan op gedeelde servers.

Deze beperking is voornamelijk te wijten aan de potentiële risico’s voor de stabiliteit van de infrastructuur. Een verkeerde configuratie of overmatig gebruik van deze functies kan leiden tot oneindige lussen of aanzienlijke overbelasting, wat niet alleen de prestaties van de betreffende server beïnvloedt, maar ook de ervaring van alle klanten die op dezelfde infrastructuur zijn gehost.

 

Een probleem oplossen bij het importeren van een MySQL/MariaDB-dump

Bij het exporteren en vervolgens opnieuw importeren van een MySQL- of MariaDB-database via de Infomaniak-hostinginterface kan het voorkomen dat het proces mislukt vanwege fouten in de DEFINER van de triggers of views. Dit gebeurt wanneer de objecten in de database zijn gemaakt met een specifieke gebruiker (de zogenaamde definer) die op het moment van de import niet meer bestaat.

Concreter gezegd: het export- en importproces maakt gebruik van een tijdelijke gebruiker, die alleen tijdens deze processen wordt gebruikt. Nadat deze gebruiker is verwijderd, worden de weergaven of triggers die met dit account als DEFINER zijn gedefinieerd, ongeldig, wat leidt tot de volgende fouten:

General error: 1449 The user specified as a definer ('xxxx_temp_1'@'%') does not exist

 

Om dit probleem te voorkomen, kan het back-upbestand (dump.sql of dump.sql.gz) vóór de import worden aangepast door de definer-definities te vervangen door CURRENT_USER. Hierdoor worden de triggers en weergaven automatisch toegewezen aan de huidige gebruiker op het moment van de import.

Hier is een voorbeeld van een opdracht waarmee de dump vóór de import kan worden gewijzigd:

sed -E 's/DEFINER=`[^`][^`]*`@`[^`][^`][^`]*`/DEFINER=CURRENT_USER/g' dump.sql > dump-corrected.sql

 

Na deze vervanging kan het aangepaste bestand normaal via de Infomaniak-manager worden geïmporteerd. Dit gedrag is bekend en gerelateerd aan de werking van tijdelijke gebruikers bij het maken van een dump/het herstellen van een back-up. Er zijn geen wijzigingen gepland in het export-/importproces in de nabije toekomst, maar het onderwerp wordt nog steeds geëvalueerd op infrastructuurniveau.

Voor meer informatie over de variabele CURRENT_USER, raadpleeg de officiële documentatie van:

Link naar deze veelgestelde vragen: https://faq.infomaniak.com/821


Is deze veelgestelde vragenlijst nuttig geweest?