Comment obtenir une liste de vues MySQL?

Je cherche un moyen de lister toutes les vues dans une firebase database.

Au début, j’ai trouvé et essayé une réponse sur les forums MySQL :

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

Comme cela ne fonctionne pas, retourner un ensemble vide. (Je sais qu’ils sont là-bas!)

Celles-ci échouent également:

 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' 

Pourquoi cela ne marche pas?

 SHOW FULL TABLES IN database_name WHERE TABLE_TYPE LIKE 'VIEW'; 

Requête MySQL pour trouver toutes les vues dans une firebase database

Voici un moyen de trouver toutes les vues dans chaque firebase database sur votre instance:

 SELECT TABLE_SCHEMA, TABLE_NAME FROM information_schema.tables WHERE TABLE_TYPE LIKE 'VIEW'; 
  select * FROM information_schema.views\G; 

Cela fonctionnera.

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

L’erreur que vous voyez est probablement due à un répertoire non créé par MySQL dans le répertoire de données de MySQL. MySQL mappe la structure de la firebase database assez directement sur le système de fichiers, les bases de données sont mappées sur des répertoires et les tables sont des fichiers dans ces répertoires.

Le nom de la firebase database qui ne fonctionne pas ressemble étrangement à quelqu’un qui a copié le répertoire de la firebase database mysql vers une sauvegarde à un moment donné et l’a laissé dans le répertoire de données de MySQL. Ce n’est pas un problème tant que vous n’essayez pas d’utiliser la firebase database pour quelque chose. Malheureusement, le schéma d’information parsing toutes les bases de données trouvées et constate que celle-ci n’est pas une firebase database réelle et qu’elle est perturbée.

La solution est de trouver le répertoire mysql.bak sur le disque dur et de le déplacer loin de MySQL.

Essayez de déplacer ce répertoire mysql.bak hors de /var/lib/mysql pour dire /root/ ou quelque chose. Il semble que mysql le trouve et cela peut être à l’origine de l’ ERROR 1102 (42000): Incorrect database name 'mysql.bak' Erreur de ERROR 1102 (42000): Incorrect database name 'mysql.bak' .

Une autre façon de trouver toutes les vues:

SELECT DISTINCT nom_table FROM information_schema.TABLES WHERE table_type = ‘VIEW’