Bagaimana cara memeriksa semua tabel dalam database sekaligus?
Daripada mengetik kueri check table ''tablename'';
untuk semua tabel satu per satu.
Apakah ada perintah sederhana seperti check all
atau semacamnya?
dari baris perintah, Anda dapat menggunakan:
mysqlcheck -A --auto-repair
Perintahnya adalah ini:
mysqlcheck -u root -p --auto-repair --check --all-databases
Anda harus memberikan kata sandi saat diminta,
atau Anda dapat menjalankan yang ini tetapi tidak disarankan karena kata sandi ditulis dalam teks yang jelas:
mysqlcheck -u root --password=THEPASSWORD --auto-repair --check --all-databases
Gunakan kueri berikut untuk mencetak
REPAIR
pernyataan SQL untuk semua tabel di dalam database:Setelah itu salin semua kueri dan jalankan di
mydatabase
.Catatan: ganti
mydatabase
dengan nama DB yang diinginkansumber
Tidak perlu mengetikkan kata sandi, cukup gunakan salah satu dari perintah ini (cukup jelas):
sumber
Perintah berikut berfungsi untuk saya menggunakan prompt perintah (Sebagai Administrator) di Windows:
Jalankan mysqlcheck dengan pengguna root, minta kata sandi, periksa semua database, dan perbaiki otomatis tabel yang rusak.
sumber
Tidak ada perintah default untuk melakukan itu, tetapi Anda dapat membuat prosedur untuk melakukan pekerjaan itu. Ini akan mengulang melalui baris
information_schema
dan memanggilREPAIR TABLE 'tablename';
setiap baris.CHECK TABLE
belum didukung untuk pernyataan yang disiapkan. Berikut contohnya (ganti MYDATABASE dengan nama database Anda):sumber
Saya suka ini untuk pemeriksaan sederhana dari shell:
sumber
mysql -ss
untuk membuat nama kolom dihilangkan dari keluaran - ini akan memungkinkan untuk menghapusNR != 1
dari kode Andauntuk host plesk, salah satu dari ini harus dilakukan: (keduanya melakukan hal yang sama)
sumber
Anda mungkin membutuhkan nama pengguna dan kata sandi:
Anda akan dimintai kata sandi.
Jika Anda ingin memasukkan cron, TETAPI kata sandi Anda akan terlihat dalam teks biasa!
sumber
Jika tabel yang rusak tetap ada setelahnya
mencoba
sumber