Estoy buscando una manera de enumerar todas las vistas en una base de datos.
Inicialmente encontré e intenté una respuesta en los foros de MySQL :
SELECT table_name
FROM information_schema.views
WHERE information_schema.views.table_schema LIKE 'view%';
Cómo siempre esto no funciona, 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 funciona esto?
Respuestas:
Consulta MySQL para encontrar todas las vistas en una base de datos
fuente
Aquí hay una manera de encontrar todas las vistas en cada base de datos en su instancia:
fuente
AND TABLE_SCHEMA LIKE 'database_name'
.fuente
Esto funcionará
fuente
Valerie Parham-Thompson
Para complementar a punto de obtener más información sobre una vista específica
Incluso con las dos respuestas válidas
Puede aplicar lo siguiente (creo que es mejor):
es mejor trabajar directamente con
information_schema.VIEWS
(observe que ahora es VIEWS y ya no TABLES ), por lo tanto, puede recuperar más datos, useDESC VIEWS
para obtener más detalles:Por ejemplo, observe el
VIEW_DEFINITION
campo, así puede usarlo en acción:Por supuesto, tiene más campos disponibles para su consideración.
fuente
Intenta mover ese
mysql.bak
directorio fuera de/var/lib/mysql
decir/root/
o algo. Parece que mysql está encontrando eso y puede estar causando eseERROR 1102 (42000): Incorrect database name 'mysql.bak'
error.fuente
El error que ve probablemente se deba a un directorio no creado por MySQL en el directorio de datos de MySQL. MySQL asigna la estructura de la base de datos bastante directamente al sistema de archivos, las bases de datos se asignan a 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 en una copia de seguridad en algún momento y lo haya dejado en el directorio de datos de MySQL. Esto no es un problema siempre que no intente usar la base de datos para nada. Desafortunadamente, 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 molesta.
La solución es encontrar el directorio mysql.bak en el disco duro y alejarlo de MySQL.
fuente
Otra forma de encontrar todas las vistas:
SELECCIONE DISTINCT table_name FROM information_schema.TABLES WHERE table_type = 'VER'
fuente
Si creó una vista en las bases de datos Mysql, simplemente puede verla como ve todas sus tablas en su base de datos particular.
escribir:
verá una lista de tablas y vistas de su base de datos.
fuente