VPS & Dedicated Server

Cara mengatasi Crash Table Error Cannot Repair Database MySQL/MariaDB WordPress Self Hosting

Aditif.Net – Bagi yang menggunakan CMS WordPress, masalah crash table cannot repair mungkin bisa membuat anda frustasi.
Berbagai cara perbaikan database sudah dilakukan, tetapi table tetap dianggap error. Hati-hati, jangan terburu melakukan drop table jika anda tidak memiliki backup.

Ada beberapa contoh error karena table crash. Manakah error yang anda alami?

Pertama, ketika anda akses web CMS WordPress anda (atau mungkin CMS/Sistem Web lainnya), muncul keterangan berikut.

Error establishing a database connection

Kedua, mungkin anda mencoba memperbaikinya, tapi gagal.. dan muncul pesan error lainnya.
[Ini adalah contoh error yang paling sering membuat frustasi para pengguna CMS WordPress dan anda tidak menemukan satupun web yang memberikan solusi untuk masalah ini]

wp_options table is not okay. It is reporting the following error: Table is marked as crashed and last repair failed. WordPress will attempt to repair this table…

Failed to repair the wp_options table. Error: Table is marked as crashed and last repair failed

wp_options: Table is marked as crashed and last repair failed

Contoh error table umum yang ringan dan mudah diperbaiki…

WordPress database error Table ‘./database_name/prefix_posts’ is marked as crashed and should be repaired for query SELECT YEAR(post_date) AS `year`, MONTH(post_date) AS `month`, count(ID) as posts FROM prefix_posts WHERE post_type = ‘post’ AND post_status = ‘publish’ GROUP BY YEAR(post_date), MONTH(post_date) ORDER BY post_date DESC made by require, require_once, include, do_action, call_user_func_array, flexx_after_content, get_sidebar, locate_template, load_template, require_once, dynamic_sidebar, call_user_func_array, WP_Widget->display_callback, WP_Widget_Archives->widget, wp_get_archives

Contoh error yang didapat dari error_log WordPress

PHP Warning: mysqli_query(): MySQL server has gone away in /home/domain/public_html/wp-includes/wp-db.php on line 1877
PHP Warning: mysqli_query(): Error reading result set’s header in /home/domain/public_html/wp-includes/wp-db.php on line 1877

…sehingga muncul tampilan “Error establishing a database connection” pada website.
Info error_log bisa lebih panjang dari contoh error berikut.

WordPress database error Table ‘./my_home/wp_posts’ is marked as crashed and last (automatic?) repair failed for query SELECT post_date_gmt FROM wp_posts WHERE post_status = ‘publish’ AND post_type IN (‘post’, ‘page’, ‘attachment’) ORDER BY post_date_gmt DESC LIMIT 1 made by require(‘wp-blog-header.php’), wp, WP->main, WP->send_headers, get_lastpostmodified, get_lastpostdate, _get_last_post_time

Contoh error ringan table dianggap tidak ada.

wp_options.MYD not found (Errcode: 2 “No such file or directory”)

Atau tetap terjadi error, padahal sudah berkali-kali mencoba melakukan perbaikan? Lihat keterangan pada table yg error, mungkin ada masalah penggunaan table ‘in use’ seperti pada gambar berikut.

Tidak perlu putus asa! Ada banyak cara yang dapat dilakukan untuk melakukan reparasi table dalam database MySQL/MariaDB. Bergantung dari jenis kasus error, maka cara penyelesaiannya-pun dapat berbeda.

Berikut adalah berbagai macam cara yang dapat dilakukan untuk memperbaiki crash table database. Lakukan cara lain, jika salah satu cara gagal dilakukan untuk memperbaikinya.

Pertama, periksa table dalam sistem database. Jika semuanya normal, maka kemungkinan hanya error sesaat karena service database sedang sibuk melayani banyak request. Akses kembali web anda setelah menunggu beberapa saat. Jika web anda dapat diakses dengan normal kembali, kasus selesai…

Berikutnya jika masih terjadi error, coba lakukan repair table database.

Jika anda menggunakan phpMyAdmin, silahkan login ke Control Panel Hosting [Contoh gambar Cpanel] dan masuk ke menu Databases > MySQL Database


Pada MySQL Databases pilih nama database yang ingin dilakukan perbaikan kemudian klik Repair DB

Lihat hasil tampilan pesan dan pastikan bahwa hasil pesan menyatakan semua table dalam kondisi sehat, yang dinyatakan dalam status table OK.

Masih gagal? Coba masuk ke fitur phpMyAdmin. Selanjutnya, pilih nama database, pilih nama table yang ingin direparasi dan selanjutnya klik pilihan Repair table
Pastikan repair table sukses yang dinyatakan dengan status table OK.

Pilih phpMyAdmin pada Fitur Databases

Pilih nama table yang error dan Klik Repair Table

Pastikan bahwa keterangan hasil menunjukkan table telah sukses diperbaiki

Masih belum berhasil juga? ada pesan error wp_options is marked as crashed and last (automatic?) repair failed?
OK, cara terakhir ini khusus bagi anda yang memiliki akses root SSH VPS atau Dedicated Server.
Jika anda hanya berlangganan shared hosting, maka laporkan kepada pihak penyedia layanan hosting untuk bantuan repair table database.

Silahkan login root via SSH ke server untuk pengguna Sistem Operasi Linux. ANda dapat menggunakan tools putty untuk akses SSH.
Selanjutnya lakukan cara berikut [Debian/Centos/Ubuntu/Fedora/CloudLinux/dll].

Pertama hentikan service MySQL

# service mysql stop
atau
# /etc/init.d/mysql stop
atau
# systemctl stop mariadb.service
atau
# systemctl stop mysql.service
atau
# systemctl stop mariadb
atau
# systemctl stop mysql

Selanjutnya, masuk ke folder database yang ingin dilakukan perbaikan.

cd /var/lib/mysql/$DATABASE_NAME

Kemudian coba jalankan perintah berikut…

myisamchk -r $TABLE_NAME

Jika gagal karena ‘table in use’, jalankan perintah berikut…

myisamchk -r -v -f $TABLE_NAME

Akan ada keterangan reparasi lengkap, mungkin agak lama.. bergantung berapa banyak baris data dan error yang terjadi. Silahkan tekan Enter jika respon berhenti untuk memastikan proses tetap berjalan. Jika setelah anda menekan tombol keyboard Enter, terjadi ganti baris.. berarti proses sedang berjalan. Jika tidak ganti baris atau bahkan muncul dialog box error disertai suara yang mengagetkan… Mungkin koneksi jaringan internet anda terputus.. lol 😀

Pastikan keterangan hasil menyatakan bahwa proses telah sukses [ada keterangan berapa jumlah data yg sukses diperbaiki] dan selesai. Sekarang, anda dapat menjalankan kembali service MySQL dengan perintah berikut.

# service mysql start
atau
# /etc/init.d/mysql start
atau
# systemctl start mariadb.service
atau
# systemctl start mysql.service
atau
# systemctl start mariadb
atau
# systemctl start mysql

Selesai. Jangan lupa lakukan penjadwalan backup data rutin/berkala bisa bulanan, mingguan maupun harian, sehingga anda tidak perlu panik kembali jika ada masalah pada database 🙂
Jika anda memiliki cara lain, anda bisa berbagi cerita pengalaman anda di kolom komentar ^_^

Jika menurut anda artikel ini bermanfaat, sebaiknya Like & Share sekalian agar teman anda juga bisa terbantu jika memiliki masalah yang sama 🙂

Semoga Membantu ya, by Aditif.Net

One Comment

Post Comment