Я ищу способ перечислить все представления в базе данных.
Сначала я нашел и попробовал ответ на форумах MySQL :
SELECT table_name
FROM information_schema.views
WHERE information_schema.views.table_schema LIKE 'view%';
Как бы то ни было, это не работает, возвращая пустой набор. (Я знаю, что они там!)
Они также терпят неудачу:
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'
Почему это не работает?
Ответы:
Запрос MySQL для поиска всех представлений в базе данных
источник
Вот способ найти все представления в каждой базе данных вашего экземпляра:
источник
AND TABLE_SCHEMA LIKE 'database_name'
.источник
Это сработает.
источник
Valerie Parham-Thompson
В дополнение, чтобы получить дополнительную информацию о конкретном представлении
Даже с двумя действительными ответами
Можно применить следующее (думаю, лучше):
лучше работать напрямую
information_schema.VIEWS
(обратите внимание, что теперь это ВИДЫ, а не ТАБЛИЦЫ ), поэтому вы можете получить больше данных, используйтеDESC VIEWS
для более подробной информации:Например, наблюдая за
VIEW_DEFINITION
полем, вы можете использовать в действии:Конечно, у вас есть больше полей для вашего рассмотрения.
источник
Попробуйте переместить этот
mysql.bak
каталог,/var/lib/mysql
чтобы сказать/root/
или что-то в этом роде. Кажется, что mysql обнаруживает это и может вызывать этуERROR 1102 (42000): Incorrect database name 'mysql.bak'
ошибку.источник
Ошибка, которую вы видите, вероятно, связана с созданием каталога, отличного от MySQL, в каталоге данных MySQL. MySQL отображает структуру базы данных непосредственно в файловой системе, базы данных отображаются в каталоги, а таблицы - это файлы в этих каталогах.
Имя нерабочей базы данных выглядит подозрительно, как будто кто-то скопировал каталог базы данных mysql в резервную копию в какой-то момент и оставил ее в каталоге данных MySQL. Это не проблема, пока вы не пытаетесь использовать базу данных ни для чего. К сожалению, информационная схема сканирует все найденные базы данных и обнаруживает, что это не настоящая база данных, и расстраивается.
Решение состоит в том, чтобы найти каталог mysql.bak на жестком диске и переместить его подальше от MySQL.
источник
Другой способ найти все View:
ВЫБЕРИТЕ DISTINCT имя_таблицы ИЗ information_schema.TABLES WHERE table_type = 'VIEW'
источник
Если вы создали какое-либо представление в базах данных Mysql, вы можете просто увидеть его, как вы видите все свои таблицы в своей конкретной базе данных.
записывать:
вы увидите список таблиц и представлений вашей базы данных.
источник