1000 FAQ, 500 Anleitungen und Lernvideos. Hier gibt es nur Lösungen!
Views, Triggers, gespeicherte Prozeduren und Routinen verwenden
Dieser Leitfaden beschreibt die verfügbaren Funktionen zur Verwaltung von relationalen Datenbanken auf den Hosting-Angeboten von Infomaniak.
Verwendung von Ansichten, Triggern, gespeicherten Prozeduren und Routinen
Was die Verwaltung relationaler Datenbanken betrifft, ist die Funktion der Ansichten ("views") standardmäßig verfügbar, sodass Benutzer Ansichten erstellen können, um die Verwaltung und Darstellung der Daten zu vereinfachen.
Allerdings sind einige erweiterte Funktionen, die eine feinere und komplexere Datenmanipulation ermöglichen, wie z. B.…
- “Triggers (Auslöser)
- gespeicherte Prozeduren ("stored procedures")
- Routinen
- und die Erstellung von Funktionen
… sind nur auf Cloud-Servern verfügbar.
Sie sind auf Shared-Servern nicht erlaubt.
Diese Einschränkung ist hauptsächlich auf die potenziellen Risiken für die Stabilität der Infrastruktur zurückzuführen. Eine falsche Konfiguration oder ein übermäßiger Gebrauch dieser Funktionen könnte unendliche Schleifen oder erhebliche Überlastungen verursachen, die nicht nur die Leistung des betroffenen Servers, sondern auch das Erlebnis aller auf derselben Infrastruktur gehosteten Kunden beeinträchtigen.
Ein Problem mit der Importierung eines MySQL/MariaDB-Dumps beheben
Beim Exportieren und anschließenden Reimportieren einer MySQL- oder MariaDB-Datenbank über die Infomaniak-Hosting-Oberfläche kann es vorkommen, dass der Vorgang aufgrund von Fehlern bei den DEFINER der Triggers oder Ansichten fehlschlägt. Dies geschieht, wenn die Objekte der Datenbank mit einem bestimmten Benutzer (dem sogenannten definer) erstellt wurden, der zum Zeitpunkt des Imports nicht mehr existiert.
Konkreter gesagt, verwendet der Export- und Importprozess einen temporären Benutzer, der nur während dieser Vorgänge verwendet wird. Nach der Löschung dieses Benutzers werden die mit diesem Konto als DEFINER definierten Ansichten oder Triggers ungültig, was zu Fehlern wie folgt führt:
General error: 1449 The user specified as a definer ('xxxx_temp_1'@'%') does not existUm dieses Problem zu vermeiden, kann die Sicherungsdatei (dump.sql oder dump.sql.gz) vor dem Import korrigiert werden, indem die definer-Definitionen durch CURRENT_USER ersetzt werden. Dadurch werden die Triggers und Ansichten automatisch dem aktuellen Benutzer zum Zeitpunkt des Imports zugeordnet.
Hier ist ein Beispiel für einen Befehl, mit dem der Dump vor dem Import geändert werden kann:
sed -E 's/DEFINER=`[^`][^`]*`@`[^`][^`][^`]*`/DEFINER=CURRENT_USER/g' dump.sql > dump-corrected.sqlNach diesem Ersatz kann die korrigierte Datei normal über den Infomaniak-Manager importiert werden. Dieses Verhalten ist bekannt und mit der Funktionsweise der temporären Benutzer beim Dump/Restore verbunden. Es sind keine Änderungen am Export-/Importprozess in naher Zukunft geplant, aber das Thema wird weiterhin auf Infrastrukturseite evaluiert.
Für weitere Informationen zur Variablen CURRENT_USER, nehmen Sie die offizielle Dokumentation von: