Base de conocimientos
1 000 FAQ, 500 tutoriales y vídeos explicativos. ¡Aquí sólo hay soluciones!
Utilizar vistas, disparadores, procedimientos almacenados y rutinas
Esta guía detalla las funciones disponibles para la gestión de bases de datos relacionales en los servicios de alojamiento de Infomaniak.
Uso de vistas, disparadores, procedimientos almacenados y rutinas
En lo que respecta a la gestión de bases de datos relacionales, la funcionalidad de las vistas está disponible de forma predeterminada, lo que permite a los usuarios crear vistas para simplificar la gestión y la presentación de los datos.
Sin embargo, algunas funcionalidades avanzadas que permiten una manipulación más precisa y compleja de los datos, como…
- “disparadores”
- procedimientos almacenados
- rutinas
- y la creación de funciones
… solo están disponibles en los 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 configuración incorrecta o un uso excesivo de estas funciones podría generar bucles infinitos o sobrecargas importantes, lo que afectaría no solo el rendimiento del servidor en cuestión, sino también la experiencia de todos los clientes alojados en la misma infraestructura.
Solucionar un problema de importación de un archivo 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, es posible que la operación falle debido a errores relacionados con los DEFINER de los disparadores o las vistas. Esto ocurre cuando los objetos de la base de datos se han creado con un usuario específico (denominado definer) que ya no existe en el momento de la importación.
En la práctica, el proceso de exportación e importación utiliza un usuario temporal, que se utiliza únicamente durante estas operaciones. Después de eliminar este usuario, las vistas o los disparadores definidos con esta cuenta como DEFINER se vuelven inválidos, lo que provoca errores como:
Error general: 1449 El usuario especificado como definidor ('xxxx_temp_1'@'%') no existe
Para 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 asociar automáticamente los triggers y las vistas al usuario actual en el momento de la importación.
Aquí tiene un ejemplo de comando para modificar el archivo de volcado antes de importarlo:
sed -E 's/DEFINER=`[^`][^`]*`@`[^`][^`][^`]*`/DEFINER=CURRENT_USER/g' dump.sql > dump-corrected.sql
Una vez realizado este reemplazo, el archivo corregido se puede importar normalmente a través del Panel de control de Infomaniak. Este comportamiento es conocido y está relacionado con el funcionamiento de los usuarios temporales durante la copia de seguridad/restauración. No se prevén modificaciones en el proceso de exportación/importación a corto plazo, pero el tema sigue en evaluación a nivel de infraestructura.
Para obtener más información sobre la variable CURRENT_USER, consulte la documentación oficial de:
Enlace a esta FAQ: https://faq.infomaniak.com/821
¿Le ha sido útil esta FAQ?