1 000 FAQ, 500 tutoriels et vidéos explicatives. Ici, il n'y a que des solutions !
Utiliser Views, Triggers, Stored Procedures et Routines
Ce guide détaille les fonctionnalités disponibles en matière de gestion des bases de données relationnelles sur les hébergements Infomaniak.
Utilisation de Vues, Triggers, Procedures stockées et Routines
En ce qui concerne la gestion des bases de données relationnelles, la fonctionnalité des vues ("views") est disponible par défaut, permettant ainsi aux utilisateurs de créer des vues pour simplifier la gestion et la présentation des données.
Cependant, certaines fonctionnalités avancées permettant une manipulation plus fine et plus complexe des données, telles que…
- “triggers” (déclencheurs)
- procédures stockées ("stored procedures")
- routines
- et la création de fonctions
… ne sont disponibles que sur Serveurs Cloud.
Elles ne sont pas autorisées sur les serveurs mutualisés.
Cette restriction est principalement due aux risques potentiels pour la stabilité de l’infrastructure. Une mauvaise configuration ou une utilisation excessive de ces fonctionnalités pourrait créer des boucles infinies ou des surcharges importantes, affectant non seulement les performances du serveur concerné, mais aussi l’expérience de tous les clients hébergés sur la même infrastructure.
Résoudre un problème d'importation de dump MySQL/MariaDB
Lors de l’exportation puis de la réimportation d’une base de données MySQL ou MariaDB via l’interface d’hébergement Infomaniak, il peut arriver que l’opération échoue en raison d’erreurs liées aux DEFINER des triggers ou des views. Ce cas survient lorsque les objets de la base ont été créés avec un utilisateur spécifique (appelé definer) qui n’existe plus au moment de l’importation.
Concrètement, le processus d’exportation et d’importation met en œuvre un utilisateur temporaire, utilisé uniquement pendant ces opérations. Après suppression de cet utilisateur, les vues ou triggers définis avec ce compte comme DEFINER deviennent invalides, provoquant des erreurs du type :
General error: 1449 The user specified as a definer ('xxxx_temp_1'@'%') does not existPour éviter ce problème, il est possible de corriger le fichier de sauvegarde (dump.sql ou dump.sql.gz) avant son importation en remplaçant les définitions de definer par CURRENT_USER. Cela permet de rattacher automatiquement les triggers et vues à l’utilisateur en cours au moment de l’import.
Voici un exemple de commande permettant de modifier le dump avant importation :
sed -E 's/DEFINER=`[^`][^`]*`@`[^`][^`][^`]*`/DEFINER=CURRENT_USER/g' dump.sql > dump-corrected.sqlUne fois ce remplacement effectué, le fichier corrigé peut être importé normalement via le Manager Infomaniak. Ce comportement est connu et lié au fonctionnement des utilisateurs temporaires lors du dump/restore. Aucune modification du processus d’export/import n’est prévue à court terme, mais le sujet reste en évaluation côté infrastructure.
Pour plus d’informations sur la variable CURRENT_USER, prenez connaissance de la documentation officielle de :