Tabel MySQL ditandai sebagai rusak dan perbaikan terakhir (otomatis?) Gagal

126

Saya sedang memperbaiki tabel ini tiba-tiba server hang dan ketika saya mengembalikan semua tabel baik-baik saja tetapi yang ini menunjukkan 'sedang digunakan' dan ketika saya mencoba memperbaikinya tidak dilanjutkan.

ERROR 144 - Tabel './extas_d47727/xzclf_ads' ditandai sebagai rusak dan perbaikan terakhir (otomatis?) Gagal

Apa yang dapat saya lakukan untuk memperbaikinya?

CryptoMiningPoolSetupYiimp
sumber
1
Saya telah melihat ini sebagian besar terjadi ketika sistem file yang mendasarinya keluar dari inode gratis. Periksa dengan df -hi. Biasanya ada sesuatu yang mengisinya dengan banyak file kecil, seperti misalnya file sesi php yang tidak dibersihkan.
Zrin

Jawaban:

260

Jika proses MySQL Anda sedang berjalan, hentikan. Di Debian:

sudo service mysql stop

Buka folder data Anda. Di Debian:

cd /var/lib/mysql/$DATABASE_NAME

Coba jalankan:

myisamchk -r $TABLE_NAME

Jika tidak berhasil, Anda dapat mencoba:

myisamchk -r -v -f $TABLE_NAME

Anda dapat memulai server MySQL Anda lagi. Di Debian:

sudo service mysql start
Aleksandar Vucetic
sumber
3
Saya mencoba perintah di atas Saya mendapatkan kesalahan ini Tidak dapat membuat tempfile baru: 'xzclf_ads.TMD'
CryptoMiningPoolSetupYiimp
2
Nah, apakah disk sudah penuh? Bisakah Anda mencoba menjalankan "df -h"? Kemungkinan besar begitu dan Anda harus mengosongkan beberapa ruang ... Selama perbaikan tabel, ini menggunakan beberapa ruang disk untuk menulis ke tabel sementara. Seperti yang Anda lihat dari pesan kesalahan yang ditulisnya ke / tmp / folder Anda
Aleksandar Vucetic
13
Saya harus menavigasi /var/lib/mysql/<database>dan lari myisamchk -r -v -f ./<table name>.
Linus Oleander
5
Saya mendapat myisam_sort_buffer_size is too smallerror, jadi perintah ini berfungsi untuk saya:myisamchk -r -v --sort_buffer_size=2G <table_name>
dusan
1
Wow, saya pikir seluruh situs web saya disemprot. Perbaikan yang sangat sederhana. Kamu adalah pahlawanku!
Anthony
105

Coba jalankan kueri berikut:

repair table <table_name>;

Saya memiliki masalah yang sama dan itu menyelesaikan masalah saya.

cREcker
sumber
Ini adalah perbaikan cepat! Memiliki tabel pilihan yang "buruk". Pastikan Anda memilih database yang benar terlebih dahulu!
jyllstuart
12

Jika itu memberi Anda penolakan izin saat pindah ke / var / lib / mysql, gunakan solusi berikut

$ cd /var/lib/
$ sudo -u mysql myisamchk -r -v -f mysql/<DB_NAME>/<TABLE_NAME>
crazycrv.dll
sumber
4

Saya perlu menambahkan USE_FRM ke pernyataan perbaikan agar berfungsi.

REPAIR TABLE <table_name> USE_FRM;
Menandai
sumber
3

Saya mendapat myisamchk: error: myisam_sort_buffer_size is too smallkesalahan.

Solusinya

myisamchk -r -v mysql/<DB_NAME>/<TABLE_NAME> --sort_buffer_size=2G
ThorstenS
sumber
2

Pergi ke data_dirdan hapus Your_table.TMPfile setelah memperbaiki <Your_table>tabel.

Humbertosms
sumber
Dimana data_dir?
CMCDragonkai
1
cari dengan perintah ini grep -r datadir /etc/mysql/. Harus di /var/lib/mysqlbawah debian dan ubuntu.
ThorstenS
1

Ini adalah solusi 100%. Saya mencobanya sendiri.

myisamchk -r -v -f --sort_buffer_size = 128M --key_buffer_size = 128M / var / lib / mysql / databasename / tabloname

cryptox1
sumber
0

Saya mencoba opsi dalam jawaban yang ada, terutama yang ditandai benar yang tidak berfungsi dalam skenario saya. Namun, yang berhasil adalah menggunakan phpMyAdmin. Pilih database dan kemudian pilih tabel, dari menu drop-down bawah pilih "Perbaiki tabel".

  • Jenis server: MySQL
  • Versi server: 5.7.23 - MySQL Community Server (GPL)
  • phpMyAdmin: Informasi versi: 4.7.7
pengguna3417257
sumber