mysqladmin -uroot create foo
varsa 1 foo
, ve 0 ise bir çıkış durumu döndürür , ancak elbette yoksa veritabanını da oluşturur. Bir veritabanının var olup olmadığını kontrol etmenin kolay bir yolu var mı?
mysqladmin -uroot create foo
varsa 1 foo
, ve 0 ise bir çıkış durumu döndürür , ancak elbette yoksa veritabanını da oluşturur. Bir veritabanının var olup olmadığını kontrol etmenin kolay bir yolu var mı?
Yanıtlar:
Bunun çok uzun zaman önce cevaplandığını fark ettim, ancak bunu yapmam çok daha temiz görünüyor:
mysql -u root -e 'use mydbname'
Eğer veritabanı mevcutsa, bu hiçbir çıktı üretmeyecek ve returncode == 0 ile çıkacaktır.
Veritabanı ise vermez var, bu bir hata iletisi üretecektir stderr'e Böyle bir şey yapacağını Yani 1. == dönüş kodu ile ve çıkış:
if ! mysql -u root -e 'use mydbname'; then
...do stuff to create database...
fi
Bu, kabuk komut dosyalarıyla iyi çalışır, çıktının herhangi bir şekilde işlenmesini gerektirmez ve yerel dosya sistemine erişime dayanmaz.
mysql -e "SHOW DATABASES LIKE 'foo'"
sana yardım etmeliyim
mysql --batch --skip-column-names -e "SHOW DATABASES LIKE 'foo'" | grep foo
.
MySQL'deki veritabanları dosya sistemindeki klasörlerdir. Bu, bir veritabanının var olup olmadığını kolayca bulmanızı sağlar:
test -d "/var/lib/mysql/databasename"
Bu durumda, /var/lib
MySQL'in datadir. Bu kod parçasının güzel tarafı, çalışan bir MySQL arka plan programına ihtiyaç duymayacak olması, aynı zamanda kimlik bilgilerine de ihtiyacı olmaması. Elbette komutu çalıştıran kullanıcının bu dizine inmesine izin verilmelidir.
Gönderen http://www.jbmurphy.com/2011/02/08/quick-check-if-a-mysql-database-exists/ istediğim bu daha yakındır:
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
İhtiyaç duyduğunuz veritabanının basit bir şekilde çalışıp çalışmadığını kontrol edebileceğinizi düşünüyorum.
mysql -uUSERNAME -pPASSWORD DATABASE -e exit
ve sonra $?
çıkış kodunu kontrol edin
Bu komut, seçili DATABASE'e ve exit
hemen bağlanmak için belirli bilgilerinizi (USERNAME ve PASSWORD) dener . Bu yüzden, eğer bağlantı uygunsa çıkış kodu 0, aksi halde sıfır olmaz.
Of, Tabii ki, herhangi bir çıkış yönlendirebilirsiniz /dev/null
gerekirse
PS. Bu yöntem günümüzde çok hızlı ve popüler olan geçici depoların sağlığını kontrol etmek için çok kullanışlıdır. Veritabanı bağlanamıyorsa, en kısa sürede geri yüklemeye başlamalısınız.