141 votes

Comment obtenir une liste des vues MySQL ?

Je cherche un moyen de lister toutes les vues dans une base de données.

Au départ, j'ai trouvé et essayé un 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 et renvoie un ensemble vide. (Je sais qu'ils sont là !)

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 ?

0 votes

lien ceci peut aider

2voto

Bill Rios Points 11

Essayez de déplacer ce mysql.bak hors du répertoire /var/lib/mysql pour dire /root/ ou autre. Il semble que mysql le trouve et que ça puisse causer ça. ERROR 1102 (42000): Incorrect database name 'mysql.bak' erreur.

1voto

Shiv kumar ojha Points 11

Si vous avez créé une vue dans les bases de données Mysql, vous pouvez simplement la voir comme vous voyez toutes les tables de votre base de données particulière.

écrire :

--mysql> SHOW TABLES;

vous verrez la liste des tables et des vues de votre base de données.

1voto

Martin Hilton Points 161

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 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 donne l'impression suspecte que quelqu'un a copié le répertoire de la base de données mysql sur 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 scanne toutes les bases de données qu'il trouve et constate que celle-ci n'est pas une vraie base de données et s'énerve.

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

0voto

Thanh Nguyen Points 1

Une autre façon de trouver toutes les vues :

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

-1voto

Dan Bolser Points 40

La valeur de 'DATABASE()' mérite d'être mentionnée dans ce contexte. C'est dommage que je ne puisse pas faire de commentaires.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X