mysqladmin -uroot create foo
devuelve un estado de salida de 1 si foo
existe, y 0 en caso contrario, pero por supuesto también creará la base de datos si aún no existe. ¿Hay alguna manera fácil de simplemente verificar si existe una base de datos?
mysqladmin -uroot create foo
devuelve un estado de salida de 1 si foo
existe, y 0 en caso contrario, pero por supuesto también creará la base de datos si aún no existe. ¿Hay alguna manera fácil de simplemente verificar si existe una base de datos?
Respuestas:
Me doy cuenta de que esto fue respondido hace mucho tiempo, pero me parece mucho más limpio hacer esto:
mysql -u root -e 'use mydbname'
Si la base de datos existe, esto no producirá salida y saldrá con returncode == 0.
Si la base de datos no existe, esto generará un mensaje de error en stderr y saldrá con returncode == 1. Entonces haría algo como esto:
if ! mysql -u root -e 'use mydbname'; then
...do stuff to create database...
fi
Esto funciona bien con los scripts de shell, no requiere ningún procesamiento de la salida y no depende de tener acceso al sistema de archivos local.
mysql -e "SHOW DATABASES LIKE 'foo'"
debería ayudarte
mysql --batch --skip-column-names -e "SHOW DATABASES LIKE 'foo'" | grep foo
.
Las bases de datos en MySQL son carpetas en el sistema de archivos. Eso hace que sea muy fácil encontrar si existe una base de datos:
test -d "/var/lib/mysql/databasename"
En este caso, /var/lib
es el datadir de MySQL. Lo bueno de este fragmento es que no necesitará un demonio MySQL en ejecución, ni tampoco necesita credenciales. Por supuesto, el usuario que ejecuta el comando debe poder descender a ese directorio.
De http://www.jbmurphy.com/2011/02/08/quick-check-if-a-mysql-database-exists/ esto es más parecido a lo que quería:
DBNAME="dblookingfor"
DBEXISTS=$(mysql --batch --skip-column-names -e "SHOW DATABASES LIKE '"$DBNAME"';" | grep "$DBNAME" > /dev/null; echo "$?")
if [ $DBEXISTS -eq 0 ];then
echo "A database with the name $DBNAME already exists."
else
echo " database $DBNAME does not exist."
fi
Creo que puede verificar si su base de datos necesaria funciona de manera simple en cualquier shell
mysql -uUSERNAME -pPASSWORD DATABASE -e exit
y luego verifique el $?
código de salida
Este comando prueba sus credenciales específicas (NOMBRE DE USUARIO y CONTRASEÑA) para conectarse a la BASE DE DATOS seleccionada e exit
inmediatamente. Entonces, si la conexión está bien, el código de salida será 0 y, de lo contrario, no será cero.
Por supuesto, puede redirigir cualquier salida /dev/null
si es necesario
PD. Este método es muy útil para verificar la salud de los almacenamientos efímeros que son tan rápidos y populares en nuestros días. Si la base de datos no se puede conectar, debe comenzar a restaurar lo antes posible.