Ich suche nach einer Möglichkeit, alle Ansichten in einer Datenbank aufzulisten.
Anfangs habe ich in den MySQL-Foren eine Antwort gefunden und versucht :
SELECT table_name
FROM information_schema.views
WHERE information_schema.views.table_schema LIKE 'view%';
Dies funktioniert jedoch nicht und gibt einen leeren Satz zurück. (Ich weiß, dass sie da drin sind!)
Diese scheitern auch:
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'
Warum funktioniert das nicht?
Antworten:
MySQL-Abfrage, um alle Ansichten in einer Datenbank zu finden
quelle
So finden Sie alle Ansichten in jeder Datenbank Ihrer Instanz:
quelle
AND TABLE_SCHEMA LIKE 'database_name'
.quelle
Das wird funktionieren.
quelle
Valerie Parham-Thompson
Als Ergänzung erhalten Sie weitere Informationen zu einer bestimmten Ansicht
Auch mit den beiden gültigen Antworten
Sie können Folgendes anwenden (ich denke, es ist besser):
Es ist besser, direkt mit zu arbeiten
information_schema.VIEWS
(beobachten Sie jetzt VIEWS und nicht mehr TABLES ), sodass Sie mehr Daten abrufen undDESC VIEWS
für weitere Details verwenden können:Beobachten
VIEW_DEFINITION
Sie zum Beispiel das Feld, damit Sie es in Aktion verwenden können:Natürlich stehen Ihnen mehr Felder zur Verfügung.
quelle
Versuchen Sie, dieses
mysql.bak
Verzeichnis/var/lib/mysql
zu verschieben, um/root/
etwas zu sagen oder so. Es scheint, als ob MySQL das findet und es könnte diesenERROR 1102 (42000): Incorrect database name 'mysql.bak'
Fehler verursachen.quelle
Der Fehler, den Sie sehen, ist wahrscheinlich auf ein nicht von MySQL erstelltes Verzeichnis im Datenverzeichnis von MySQL zurückzuführen. MySQL ordnet die Datenbankstruktur ziemlich direkt dem Dateisystem zu, Datenbanken werden Verzeichnissen zugeordnet und Tabellen sind Dateien in diesen Verzeichnissen.
Der Name der nicht funktionierenden Datenbank sieht verdächtig aus, als hätte jemand das MySQL-Datenbankverzeichnis irgendwann in eine Sicherung kopiert und im Datenverzeichnis von MySQL belassen. Dies ist kein Problem, solange Sie nicht versuchen, die Datenbank für irgendetwas zu verwenden. Leider durchsucht das Informationsschema alle gefundenen Datenbanken und stellt fest, dass es sich bei dieser Datenbank nicht um eine echte Datenbank handelt, und ist verärgert.
Die Lösung besteht darin, das Verzeichnis mysql.bak auf der Festplatte zu finden und es weit weg von MySQL zu verschieben.
quelle
Eine andere Möglichkeit, alle Ansichten zu finden:
SELECT DISTINCT table_name FROM information_schema.TABLES WHERE table_type = 'VIEW'
quelle
Wenn Sie eine Ansicht in MySQL-Datenbanken erstellt haben, können Sie diese einfach so anzeigen, wie Sie alle Tabellen in Ihrer bestimmten Datenbank sehen.
schreiben:
Sie sehen eine Liste der Tabellen und Ansichten Ihrer Datenbank.
quelle