Szukam sposobu na wyświetlenie wszystkich widoków w bazie danych.
Początkowo znalazłem i wypróbowałem odpowiedź na forach MySQL :
SELECT table_name
FROM information_schema.views
WHERE information_schema.views.table_schema LIKE 'view%';
Jednak to nie zadziała, zwracając pusty zestaw. (Wiem, że tam są!)
Te również zawodzą:
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'
Dlaczego to nie działa?
Odpowiedzi:
Zapytanie MySQL, aby znaleźć wszystkie widoki w bazie danych
źródło
Oto sposób na znalezienie wszystkich widoków w każdej bazie danych w Twojej instancji:
źródło
AND TABLE_SCHEMA LIKE 'database_name'
.źródło
To zadziała.
źródło
Valerie Parham-Thompson
Aby uzupełnić, aby uzyskać więcej informacji o określonym widoku
Nawet przy dwóch ważnych odpowiedziach
Możesz zastosować następujące (myślę, że jest lepsze):
lepiej pracować bezpośrednio z
information_schema.VIEWS
(obserwuj, że teraz to WIDOK, a nie TABELE ), dzięki czemu możesz pobrać więcej danych, użyj,DESC VIEWS
aby uzyskać więcej informacji:Na przykład obserwuj
VIEW_DEFINITION
pole, dzięki czemu możesz użyć w akcji:Oczywiście masz więcej pól do rozważenia.
źródło
Spróbuj przenieść ten
mysql.bak
katalog poza,/var/lib/mysql
aby powiedzieć/root/
lub coś. Wygląda na to, że mysql znajduje to i może powodować tenERROR 1102 (42000): Incorrect database name 'mysql.bak'
błąd.źródło
Błąd, który widzisz, jest prawdopodobnie spowodowany utworzeniem katalogu innego niż MySQL w katalogu danych MySQL. MySQL odwzorowuje strukturę bazy danych bezpośrednio na system plików, bazy danych są mapowane do katalogów, a tabele są plikami w tych katalogach.
Nazwa niedziałającej bazy danych wygląda podejrzanie, jakby ktoś skopiował w pewnym momencie katalog bazy danych mysql do kopii zapasowej i zostawił go w katalogu danych MySQL. Nie stanowi to problemu, o ile nie próbujesz używać bazy danych do niczego. Niestety schemat informacyjny skanuje wszystkie znalezione bazy danych i stwierdza, że ta nie jest prawdziwą bazą danych, i denerwuje się.
Rozwiązaniem jest znalezienie katalogu mysql.bak na dysku twardym i przeniesienie go z dala od MySQL.
źródło
Inny sposób na znalezienie wszystkich widoków:
SELECT DISTINCT nazwa_tabeli FROM schemat_informacyjny.TABLES WHERE typ_tabeli = 'WIDOK'
źródło
Jeśli utworzyłeś dowolny widok w bazach danych MySQL, możesz go po prostu zobaczyć tak, jak widzisz wszystkie tabele w konkretnej bazie danych.
pisać:
zobaczysz listę tabel i widoków Twojej bazy danych.
źródło