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?
23
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.http://dev.mysql.com/doc/refman/5.1/id/show-databases.html
sumber
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:
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.sumber
Dari http://www.jbmurphy.com/2011/02/08/quick-check-if-a-mysql-database-exists/ ini lebih mirip dengan yang saya inginkan:
sumber
Agak macet, tetapi ini akan mencetak 1 jika foo tidak ada, 0 sebaliknya:
sumber
Saya pikir Anda dapat memeriksa apakah database yang dibutuhkan Anda bekerja secara sederhana di shell apa pun
dan kemudian periksa
$?
kode keluarPerintah 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 diperlukanPS. 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.
sumber