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?


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

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.


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>

4

Saya perlu menambahkan USE_FRM ke pernyataan perbaikan agar berfungsi.

REPAIR TABLE <table_name> USE_FRM;

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

2

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


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


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.