1000 FAQ, 500 tutoriales y vídeos explicativos. ¡Aquí sólo hay soluciones!
Usar vistas, disparadores, procedimientos almacenados y rutinas
Esta guía detalla las funcionalidades disponibles en cuanto a la gestión de bases de datos relacionales en los alojamientos de Infomaniak.
Uso de Vistas, Triggers, Procedimientos almacenados y Rutinas
En cuanto a la gestión de bases de datos relacionales, la funcionalidad de las vistas ("views") está disponible por defecto, permitiendo así a los usuarios crear vistas para simplificar la gestión y presentación de los datos.
Sin embargo, algunas funcionalidades avanzadas que permiten una manipulación más precisa y compleja de los datos, como…
- “triggers (disparadores)
- procedimientos almacenados ("stored procedures")
- rutinas
- y la creación de funciones
… solo están disponibles en Servidores Cloud.
No están permitidas en los servidores compartidos.
Esta restricción se debe principalmente a los riesgos potenciales para la estabilidad de la infraestructura. Una mala configuración o un uso excesivo de estas funcionalidades podría crear bucles infinitos o sobrecargas importantes, afectando no solo el rendimiento del servidor en cuestión, sino también la experiencia de todos los clientes alojados en la misma infraestructura.
Resolver un problema de importación de volcado MySQL/MariaDB
Al exportar e importar una base de datos MySQL o MariaDB a través de la interfaz de alojamiento de Infomaniak, puede ocurrir que la operación falle debido a errores relacionados con los DEFINER de los triggers o de las views. Este caso ocurre cuando los objetos de la base se crearon con un usuario específico (llamado definer) que ya no existe en el momento de la importación.
Concretamente, el proceso de exportación e importación utiliza un usuario temporal, que solo se usa durante estas operaciones. Después de eliminar a este usuario, las vistas o triggers definidos con esta cuenta como DEFINER se vuelven inválidos, provocando errores del tipo:
General error: 1449 The user specified as a definer ('xxxx_temp_1'@'%') does not existPara evitar este problema, es posible corregir el archivo de copia de seguridad (dump.sql o dump.sql.gz) antes de su importación reemplazando las definiciones de definer por CURRENT_USER. Esto permite vincular automáticamente los triggers y vistas al usuario actual en el momento de la importación.
Aquí hay un ejemplo de comando que permite modificar el volcado antes de la importación:
sed -E 's/DEFINER=`[^`][^`]*`@`[^`][^`][^`]*`/DEFINER=CURRENT_USER/g' dump.sql > dump-corrected.sqlUna vez realizado este reemplazo, el archivo corregido puede ser importado normalmente a través del Manager de Infomaniak. Este comportamiento es conocido y está relacionado con el funcionamiento de los usuarios temporales durante el volcado/restablecimiento. No se planea ninguna modificación del proceso de exportación/importación a corto plazo, pero el tema sigue en evaluación por parte de la infraestructura.
Para obtener más información sobre la variable CURRENT_USER, consulte la documentación oficial de: