mysqladmin -uroot create foo
retorna um status de saída 1, se foo
existir, e 0, caso contrário, mas é claro que também criará o banco de dados, se ainda não existir. Existe alguma maneira fácil de simplesmente verificar se existe um banco de dados?
mysqladmin -uroot create foo
retorna um status de saída 1, se foo
existir, e 0, caso contrário, mas é claro que também criará o banco de dados, se ainda não existir. Existe alguma maneira fácil de simplesmente verificar se existe um banco de dados?
Respostas:
Sei que isso foi respondido há muito tempo, mas me parece muito mais limpo fazer isso:
mysql -u root -e 'use mydbname'
Se o banco de dados existir, isso não produzirá saída e sairá com código de retorno == 0.
Se o banco de dados não existir, isso produzirá uma mensagem de erro no stderr e sairá com returncode == 1. Então, você faria algo assim:
if ! mysql -u root -e 'use mydbname'; then
...do stuff to create database...
fi
Isso funciona bem com scripts de shell, não requer nenhum processamento da saída e não depende de ter acesso local ao sistema de arquivos.
mysql -e "SHOW DATABASES LIKE 'foo'"
deve ajudá-lo.
mysql --batch --skip-column-names -e "SHOW DATABASES LIKE 'foo'" | grep foo
.
Bancos de dados no MySQL são pastas no sistema de arquivos. Isso facilita muito descobrir se existe um banco de dados:
test -d "/var/lib/mysql/databasename"
Nesse caso, /var/lib
é o datadir do MySQL. O bom desse trecho é que ele não precisará de um daemon MySQL em execução, nem credenciais. Obviamente, o usuário que está executando o comando deve ter permissão para descer para esse diretório.
Em http://www.jbmurphy.com/2011/02/08/quick-check-if-a-mysql-database-exists/, isso é mais parecido com o que eu queria:
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
Eu acho que você pode verificar se o seu banco de dados necessário funciona de maneira simples em qualquer shell
mysql -uUSERNAME -pPASSWORD DATABASE -e exit
e verifique o $?
código de saída
Este comando tenta suas credenciais específicas (USERNAME e PASSWORD) para se conectar ao DATABASE selecionado e exit
imediatamente. Portanto, se a conexão estiver correta, exitcode será 0 e diferente de zero.
Obviamente, você pode redirecionar qualquer saída para, /dev/null
se necessário
PS. Este método é muito útil para verificar a saúde dos depósitos efêmeros que são tão rápidos e populares nos dias de hoje. Se o banco de dados não puder ser conectado, você deverá iniciar a restauração o mais rápido possível.