vistas vista varias una tablas script parametros llamar inner crear con como mysql

varias - vistas e indices en mysql



¿Cómo obtener una lista de vistas de MySQL? (7)

Estoy buscando una manera de enumerar todas las vistas en una base de datos.

Inicialmente encontré y probé una respuesta en los foros de MySQL :

SELECT table_name FROM information_schema.views WHERE information_schema.views.table_schema LIKE ''view%'';

Como quiera que esto no funcione, devolviendo un conjunto vacío. (¡Sé que están ahí!)

Estos también fallan:

mysql> use information_schema; Database changed mysql> select * from views; ERROR 1102 (42000): Incorrect database name ''mysql.bak'' mysql> select * from tables; ERROR 1102 (42000): Incorrect database name ''mysql.bak''

¿Por qué no está funcionando?


Aquí hay una manera de encontrar todas las vistas en cada base de datos en su instancia:

SELECT TABLE_SCHEMA, TABLE_NAME FROM information_schema.tables WHERE TABLE_TYPE LIKE ''VIEW'';


El error que está viendo probablemente se deba a un directorio no creado por MySQL en el directorio de datos de MySQL. MySQL mapea la estructura de la base de datos bastante directamente en el sistema de archivos, las bases de datos están mapeadas en directorios y las tablas son archivos en esos directorios.

El nombre de la base de datos que no funciona parece sospechosamente como si alguien hubiera copiado el directorio de la base de datos mysql a una copia de seguridad en algún momento y lo hubiera dejado en el directorio de datos de MySQL. Esto no es un problema, siempre y cuando no intentes utilizar la base de datos para nada. Lamentablemente, el esquema de información escanea todas las bases de datos que encuentra y descubre que esta no es una base de datos real y se enoja.

La solución es encontrar el directorio mysql.bak en el disco duro y moverlo lejos de MySQL.


Esto funcionará

USE INFORMATION_SCHEMA; SELECT TABLE_SCHEMA, TABLE_NAME FROM information_schema.tables WHERE TABLE_TYPE LIKE ''VIEW'';


Intente mover ese directorio mysql.bak fuera de /var/lib/mysql para decir /root/ o algo. Parece que mysql está encontrando eso y puede estar causando que ERROR 1102 (42000): Incorrect database name ''mysql.bak'' Error de ERROR 1102 (42000): Incorrect database name ''mysql.bak'' incorrecto.


Otra forma de encontrar toda la Vista:

SELECCIONE DISTINCT table_name FROM information_schema.TABLES WHERE table_type = ''VIEW''


select * FROM information_schema.views/G;