Apakah mungkin untuk memeriksa apakah database (MySQL) ada setelah membuat koneksi.
Saya tahu cara memeriksa apakah tabel ada dalam DB, tapi saya perlu memeriksa apakah DB ada. Jika tidak, saya harus memanggil potongan kode lain untuk membuatnya dan mengisinya.
Saya tahu ini semua kedengarannya kurang bagus - ini adalah aplikasi cepat dan kotor.
Cara sederhana untuk memeriksa apakah ada database adalah:
Jika database dengan nama 'dbname' tidak ada, Anda mendapatkan set kosong. Jika memang ada, Anda mendapatkan satu baris.
sumber
Jika Anda mencari skrip php lihat di bawah.
sumber
Dari shell seperti bash
sumber
Berikut adalah fungsi bash untuk memeriksa apakah ada database:
Alternatif lain adalah dengan hanya mencoba menggunakan database. Perhatikan bahwa ini juga memeriksa izin:
sumber
>/dev/null
menjamin hasilnya selalu nol. Coba sesuatu sepertiif [ -z "$(mysql ${db} 2>&1 </dev/null)" ]; then ...
.>/dev/null
tidak mengubah kode keluar dari berjalanmysql
. Itu hanya menyembunyikan output jika ada kesalahan. Bagian iniif ...; then
memeriksa kode keluar.Cara yang bagus untuk memeriksa apakah database ada di PHP adalah:
Itulah metode yang selalu saya gunakan.
sumber
BASH-one-liner yang sangat sederhana:
sumber
sumber
sumber
Bagi mereka yang menggunakan php dengan mysqli maka ini adalah solusi saya. Saya tahu jawabannya sudah dijawab, tetapi saya pikir akan sangat membantu untuk memiliki jawabannya sebagai pernyataan mysqli yang disiapkan juga.
sumber
Menggunakan bash:
sumber
Long winded dan berbelit-belit (tapi tetap bersamaku!), Ini adalah sistem kelas yang saya buat untuk memeriksa apakah ada DB dan juga untuk membuat tabel yang diperlukan:
Dalam hal ini Anda dapat mengganti nama basis data
en
dengan apa pun yang Anda suka dan juga mengubah skrip pembuat menjadi apa saja dan (semoga!) Tidak akan merusaknya. Jika ada yang bisa memperbaiki ini, beri tahu saya!Catatan
Jika Anda tidak menggunakan Visual Studio dengan alat PHP, jangan khawatir tentang daerah, mereka adalah untuk melipat kode: P
sumber
Dengan Skrip ini, Anda bisa mendapatkan Ya atau Tidak ada basis data, jika tidak ada, tidak membuang Exception.
sumber
Kode Rails:
=> entos_development ada, entos_development1 tidak ada
sumber
Jika Anda menggunakan MSSQL sebagai ganti MySQL, lihat jawaban ini dari utas yang sama .
sumber
Saya hanya menggunakan kueri berikut:
Kemudian periksa apakah hasilnya SALAH. Kalau tidak, mungkin ada kesalahan akses ditolak, tapi saya tidak tahu itu. Jadi, jika ada hak istimewa yang terlibat, seseorang dapat menggunakan:
seperti yang sudah disebutkan sebelumnya.
sumber
Inilah cara saya melakukannya di dalam skrip bash:
sumber
Solusi berikut berhasil untuk saya:
sumber
Solusi php lain, tetapi dengan PDO:
sumber
Solusi golang
sumber
Hati-hati saat memeriksa keberadaan dengan pernyataan serupa!
Jika dalam serangkaian peristiwa yang tidak menguntungkan, variabel Anda akhirnya kosong, dan Anda akhirnya menjalankan ini:
Ini akan mengembalikan SEMUA database, sehingga memberi tahu skrip panggilan bahwa itu ada sejak beberapa baris dikembalikan.
Jauh lebih aman dan lebih baik menggunakan tanda sama dengan "=" untuk menguji keberadaan.
Cara yang benar dan aman untuk menguji keberadaan harus:
Perhatikan bahwa Anda harus membungkus basis data nama kolom dengan backticks, karena itu tidak dapat menggunakan sintaks yang santai.
Dengan cara ini, jika kode yang membuat variabel 'xxxxx' dikembalikan kosong, maka SHOW DATABASES tidak akan mengembalikan SEMUA basis data, tetapi akan mengembalikan set kosong.
sumber