mysqladmin -uroot create foo
mengembalikan status keluar 1 jika foo
ada, dan 0 sebaliknya, tetapi tentu saja itu juga akan membuat database jika belum ada. Apakah ada cara mudah untuk mengecek apakah ada database?
mysqladmin -uroot create foo
mengembalikan status keluar 1 jika foo
ada, dan 0 sebaliknya, tetapi tentu saja itu juga akan membuat database jika belum ada. Apakah ada cara mudah untuk mengecek apakah ada database?
Jawaban:
Saya menyadari ini telah dijawab sejak lama, tetapi tampaknya jauh lebih bersih bagi saya untuk melakukan ini:
mysql -u root -e 'use mydbname'
Jika database ada, ini tidak akan menghasilkan output dan keluar dengan returncode == 0.
Jika database tidak ada, ini akan menghasilkan pesan kesalahan pada stderr dan keluar dengan returncode == 1. Jadi Anda akan melakukan sesuatu seperti ini:
if ! mysql -u root -e 'use mydbname'; then
...do stuff to create database...
fi
Ini beroperasi dengan baik dengan skrip shell, tidak memerlukan pemrosesan output, dan tidak bergantung pada memiliki akses sistem file lokal.
mysql -e "SHOW DATABASES LIKE 'foo'"
harus membantumu.
mysql --batch --skip-column-names -e "SHOW DATABASES LIKE 'foo'" | grep foo
.
Database di MySQL adalah folder di sistem file. Itu membuatnya sangat mudah untuk menemukan apakah ada database:
test -d "/var/lib/mysql/databasename"
Dalam hal ini, /var/lib
adalah datadir MySQL. Yang menyenangkan tentang cuplikan ini adalah tidak perlu menjalankan daemon MySQL, juga tidak memerlukan kredensial. Tentu saja pengguna yang menjalankan perintah harus diizinkan masuk ke direktori itu.
Dari http://www.jbmurphy.com/2011/02/08/quick-check-if-a-mysql-database-exists/ ini lebih mirip dengan yang saya inginkan:
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
Saya pikir Anda dapat memeriksa apakah database yang dibutuhkan Anda bekerja secara sederhana di shell apa pun
mysql -uUSERNAME -pPASSWORD DATABASE -e exit
dan kemudian periksa $?
kode keluar
Perintah ini mencoba kredensial spesifik Anda (USERNAME dan PASSWORD) untuk terhubung ke DATABASE yang dipilih dan exit
segera. Jadi, jika koneksi ok exitcode akan menjadi 0, dan bukan nol sebaliknya.
Tentu saja, Anda dapat mengarahkan output apa pun ke /dev/null
jika diperlukan
PS. Metode ini sangat berguna untuk memeriksa kesehatan penyimpanan sementara yang begitu cepat dan populer di zaman kita. Jika basis data tidak dapat terhubung, Anda harus mulai memulihkan secepatnya.