Je cherche un moyen de lister toutes les vues dans une base de données.
Au départ, 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%';
Cependant, cela ne fonctionne pas, renvoyer un ensemble vide. (Je sais qu'ils sont là-dedans!)
Ceux-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 ça ne marche pas?
Réponses:
Requête MySQL pour trouver toutes les vues dans une base de données
la source
Voici un moyen de trouver toutes les vues dans chaque base de données de votre instance:
la source
AND TABLE_SCHEMA LIKE 'database_name'
.la source
Cela fonctionnera.
la source
Valerie Parham-Thompson
Pour compléter sur pour obtenir plus d'informations sur une vue spécifique
Même avec les deux réponses valides
Vous pouvez appliquer ce qui suit (je pense que c'est mieux):
Il est préférable de travailler directement avec
information_schema.VIEWS
(observez maintenant VIEWS et non plus TABLES ), ainsi vous pouvez récupérer plus de données, utilisezDESC VIEWS
pour plus de détails:Par exemple, observez le
VIEW_DEFINITION
champ, vous pouvez donc utiliser en action:Bien sûr, vous avez plus de champs disponibles pour votre considération.
la source
Essayez de déplacer ce
mysql.bak
répertoire/var/lib/mysql
pour dire/root/
ou quelque chose. Il semble que mysql trouve cela et cela peut être à l'origine de cetteERROR 1102 (42000): Incorrect database name 'mysql.bak'
erreur.la source
L'erreur que vous voyez est probablement due à un répertoire créé non-MySQL dans le répertoire de données de MySQL. MySQL mappe la structure de la base de données 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 base de données qui ne fonctionne pas ressemble étrangement à ce que quelqu'un a copié le répertoire de la base de données mysql dans 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 base de données pour quoi que ce soit. Malheureusement, le schéma d'information analyse toutes les bases de données qu'il trouve et constate que celle-ci n'est pas une véritable base de données et s'énerve.
La solution est de trouver le répertoire mysql.bak sur le disque dur et de l'éloigner de MySQL.
la source
Une autre façon de trouver toutes les vues:
SELECT DISTINCT nom_table FROM schéma_information.TABLES WHERE type_table = 'VIEW'
la source
Si vous avez créé une vue dans les bases de données Mysql, vous pouvez simplement la voir comme vous voyez toutes vos tables dans votre base de données particulière.
écrire:
vous verrez la liste des tables et des vues de votre base de données.
la source