Mir ist klar, dass dies vor langer Zeit beantwortet wurde, aber es scheint mir viel sauberer zu sein, dies zu tun:
mysql -u root -e 'use mydbname'
Wenn die Datenbank vorhanden ist, wird keine Ausgabe erstellt und mit dem Rückkehrcode == 0 beendet.
Wenn die Datenbank nicht existiert, wird dies eine Fehlermeldung auf stderr erzeugen und mit returncode == 1 beendet. Also würden Sie so etwas tun:
if ! mysql -u root -e 'use mydbname'; then
...do stuff to create database...
fi
Dies funktioniert gut mit Shell-Skripten, erfordert keine Verarbeitung der Ausgabe und ist nicht auf den Zugriff auf das lokale Dateisystem angewiesen.
mysql -e "SHOW DATABASES LIKE 'foo'"
sollte dir helfen.http://dev.mysql.com/doc/refman/5.1/de/show-databases.html
quelle
mysql --batch --skip-column-names -e "SHOW DATABASES LIKE 'foo'" | grep foo
.Datenbanken in MySQL sind Ordner im Dateisystem. Das macht es verdammt einfach herauszufinden, ob eine Datenbank existiert:
In diesem Fall
/var/lib
ist der Datadir von MySQL. Das Schöne an diesem Snippet ist, dass kein MySQL-Daemon ausgeführt werden muss und keine Anmeldeinformationen erforderlich sind. Natürlich muss der Benutzer, der den Befehl ausführt, berechtigt sein, in dieses Verzeichnis zu gelangen.quelle
Von http://www.jbmurphy.com/2011/02/08/quick-check-if-a-mysql-database-exists/ entspricht dies eher dem, was ich wollte:
quelle
Ein bisschen hacky, aber das gibt 1 aus, wenn foo nicht existiert, sonst 0:
quelle
Ich denke, Sie können in jeder Shell überprüfen, ob Ihre benötigte Datenbank auf einfache Weise funktioniert
und dann
$?
auf Exit-Code prüfenMit diesem Befehl wird versucht, mit Ihren spezifischen Anmeldeinformationen (USERNAME und PASSWORD)
exit
sofort eine Verbindung zu der ausgewählten DATABASE herzustellen . Wenn die Verbindung in Ordnung ist, ist der Exitcode 0, andernfalls ungleich Null.Natürlich können Sie jede Ausgabe
/dev/null
bei Bedarf umleitenPS. Diese Methode ist sehr nützlich, um die Gesundheit von kurzlebigen Speichern zu überprüfen, die heutzutage so schnell und beliebt sind. Wenn keine Verbindung zur Datenbank hergestellt werden kann, sollten Sie die Wiederherstellung so schnell wie möglich starten.
quelle