Saltar al contenido

Modificar DEFINER en muchas vistas

No olvides que en las ciencias un problema casi siempre tiene más de una soluciones, por lo tanto nosotros mostraremos lo más óptimo y eficiente.

Solución:

Puede utilizar ALTER VIEW junto con el esquema de información. Mencionaste descargarlo en un archivo de texto, así que tal vez algo como esto:

SELECT CONCAT("ALTER DEFINER=`youruser`@`host` VIEW `",table_name,"` AS ", view_definition,";") 
FROM information_schema.views WHERE table_schema='databasename'

Mezcle esto con la línea de comando mysql (suponiendo que * nix, no esté familiarizado con Windows):

> echo "*abovequery*" | mysql -uuser -p > alterView.sql
> mysql -uuser -p databasename < alterView.sql

Nota al margen: no puede modificar las entradas de information_schema directamente. Nota 2: Esto funciona solo para una base de datos a la vez, si deja WHERE table_schema necesita insertar comandos USE entre cada uno.

Cree un archivo de texto con todas las definiciones de vista:

mysql -uusername -ppassword -A --skip-column-names -e"SELECT CONCAT('SHOW CREATE VIEW ',table_schema,'.',table_name,'\G') FROM information_schema.tables WHERE engine IS NULL" | mysql -uusername -ppassword -A --skip-column-names > AllMyViews.sql

Edita AllMyViews.sql desde allí. Luego, suelte las vistas

mysql -uusername -ppassword -A --skip-column-names -e"SELECT CONCAT('DROP VIEW ',table_schema,'.',table_name,';') FROM information_schema.tables WHERE engine IS NULL" | mysql -uusername -ppassword -A

Después de editar AllMyViews.sql recargarlos

mysql -uusername -ppassword -A < AllMyViews.sql

Darle una oportunidad !!!

Exportar todas las vistas de la base de datos :

mysql -BNe "SELECT TABLE_NAME FROM TABLES WHERE TABLE_SCHEMA = '' AND TABLE_TYPE = 'VIEW'" 
    information_schema | xargs mysqldump --single-transaction --no-data  >views.sql

o:

mysql -BNe "SELECT TABLE_NAME FROM VIEWS WHERE TABLE_SCHEMA = ''" 
    information_schema | xargs mysqldump --single-transaction --no-data  >views.sql

Editar views.sql (cambiar definidor) y recrearlos:

cat views.sql | mysql 

Especificar -u y -p interruptores si es necesario.

Comentarios y valoraciones de la guía

Si sostienes algún contratiempo y capacidad de acrecentar nuestro escrito puedes realizar una referencia y con mucho gusto lo leeremos.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : / /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *