Estou procurando uma maneira de listar todas as visualizações em um banco de dados.
Inicialmente, encontrei e tentei uma resposta nos fóruns do MySQL :
SELECT table_name
FROM information_schema.views
WHERE information_schema.views.table_schema LIKE 'view%';
No entanto, isso não funciona, retornando um conjunto vazio. (Eu sei que eles estão lá!)
Estes também falham:
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'
Por que isso não está funcionando?
Respostas:
Consulta MySQL para encontrar todas as visualizações em um banco de dados
fonte
Aqui está uma maneira de encontrar todas as visualizações em todos os bancos de dados da sua instância:
fonte
AND TABLE_SCHEMA LIKE 'database_name'
.fonte
Isso vai funcionar.
fonte
Valerie Parham-Thompson
Para complementar e obter mais informações sobre uma visualização específica
Mesmo com as duas respostas válidas
Você pode aplicar o seguinte (acho melhor):
é melhor trabalhar diretamente com
information_schema.VIEWS
(observe agora é VIEWS e não TABLES ), assim você pode recuperar mais dados, useDESC VIEWS
para obter mais detalhes:Por exemplo, observe o
VIEW_DEFINITION
campo, portanto, você pode usar em ação:Claro que você tem mais campos disponíveis para sua consideração.
fonte
Tente mover esse
mysql.bak
diretório/var/lib/mysql
para dizer/root/
ou algo assim. Parece que o mysql está descobrindo isso e pode estar causando esseERROR 1102 (42000): Incorrect database name 'mysql.bak'
erro.fonte
O erro que você vê provavelmente se deve a um diretório não criado no MySQL no diretório de dados do MySQL. O MySQL mapeia a estrutura do banco de dados diretamente no sistema de arquivos, os bancos de dados são mapeados para diretórios e as tabelas são arquivos nesses diretórios.
O nome do banco de dados que não funciona parece suspeito de que alguém copiou o diretório do banco de dados mysql para um backup em algum momento e o deixou no diretório de dados do MySQL. Isso não é um problema, desde que você não tente usar o banco de dados para nada. Infelizmente, o esquema de informações verifica todos os bancos de dados encontrados e descobre que este não é um banco de dados real e fica chateado.
A solução é encontrar o diretório mysql.bak no disco rígido e afastá-lo do MySQL.
fonte
Outra maneira de encontrar todos os View:
SELECT DISTINCT table_name FROM information_schema.TABLES WHERE table_type = 'VIEW'
fonte
Se você criou alguma exibição nos bancos de dados Mysql, pode simplesmente vê-la como todas as suas tabelas em seu banco de dados específico.
escrever:
você verá uma lista de tabelas e visualizações do seu banco de dados.
fonte