En esta guía te mostraremos cómo importar tu base de datos MySQL con STORED PROCEDURES (procedimientos almacenados) o FUNCTIONS.
Asignar "Definer" de tus Stored Procedures
Las sentencias de creación de los Stored Procedures en un archivo SQL a importar especifican un usuario, que será el usuario que podrá ejecutarlos luego, por lo que antes de importar tu base deberás asignar el usuario correcto de "Definer" para que luego puedas acceder a ellos.
Para ello debes editar tu archivo SQL con un editor de texto antes de importarlo en MySQL. Para este ejemplo, usaremos Notepad++ ya que soporta Regex para reemplazar cadenas de texto.
- Abre tu editor de texto Notepad++.
- Abre ahora el archivo SQL (descomprimido, en texto plano).
- Ve a la función Reemplazar.
- Completa el reemplazar origen "Find what" y destino "Replace with" de esta manera:
- Buscar: DEFINER=`[^`]+`@`[^`]+`
- Reemplazar por: DEFINER=CURRENT_USER
Si estás usando Notepad++ selecciona Regular expression como modo de búsqueda.
Esto cambiará cualquier nombre de usuario "Definer" por "CURRENT_USER" que es una constante. - Haz clic en Replace all o Reemplazar todo.
- Guarda el archivo.
- Tu archivo estará listo para importar por consola SSH (no phpMyAdmin).
Importar tu base de datos con Stored Procedures
Es importante que en este caso utilices la terminal de tu cuenta de hosting para importar tu base de datos, dado que deberás ingresar a MySQL con el usuario creado previamente para tu base de datos.
Aquí te explicamos paso a paso cómo Importar base de datos por consola SSH
Es importante que no utilices phpMyAdmin para este tipo de importación con SPs, debido a que phpMyAdmin crea un usuario temporal para poder acceder y no coincidirá con tu "Definer".
Cómo reparar el error "Acceso negado. Usted necesita el privilegio SUPER para esta operación"
Este error ocurre si el "Definer" que especificaste en tus Stored Procedures (en el archivo SQL a importar) no coincide con el usuario que estás utilizando para ingresar a MySQL para importar la base de datos.
error: #1227 - Acceso negado. Usted necesita el privilegio SUPER para esta operación.
Recuerda que el DEFINER tiene que ser el mismo nombre de usuario que estás utilizando para importar tu base de datos SQL en MySQL.
Comentarios
0 comentarios
Inicie sesión para dejar un comentario.