Penyelesaian Ralat

Cara Mengatasi “Table is marked as crashed” MySQL dan Repair Table di phpMyAdmin

  • 11 minit untuk membaca
  • Pasukan Hostragons
Cara Mengatasi “Table is marked as crashed” MySQL dan Repair Table di phpMyAdmin

Masalah “Table is marked as crashed” pada MySQL biasanya muncul apabila sebuah table yang menggunakan engine MyISAM mengalami kerosakan dan tidak dapat dibaca dengan selamat oleh MySQL. Solusi paling pantas ialah buat backup database terlebih dahulu, kemudian pilih table yang bermasalah di phpMyAdmin dan jalankan fungsi Repair Table. Namun, error ini tidak selalu selesai hanya dengan satu klik; ia boleh berulang akibat server shutdown secara tiba-tiba, disk penuh, query bermasalah, trafik tulis yang tinggi, atau konfigurasi MySQL yang lama. Dalam panduan ini, anda akan pelajari punca utama error, langkah repair table dengan selamat melalui phpMyAdmin, cara backup sebelum repair, serta kaedah pencegahan jangka panjang.

Website anda mungkin menggunakan WordPress, OpenCart, custom PHP, atau forum; jika table MySQL rosak, pelawat boleh mendapat “white screen”, error 500, timeout, atau error database yang tidak dijangka di admin panel. Untuk laman e-dagang, table pesanan, produk, sesi atau cart yang rosak boleh menyebabkan kehilangan pendapatan walaupun hanya beberapa minit downtime. Maka semasa repair, pastikan data kekal selamat dan kenal pasti punca error. Infrastruktur hosting yang stabil, backup berkala dan pemilihan engine database yang tepat boleh meminimumkan risiko sebegini. Untuk hosting yang diurus dan mudah dipantau, boleh pertimbangkan Hostragons hosting web atau bagi projek dengan keperluan tinggi Hostragons Pelayan VPS.

Apa itu error Table is marked as crashed?

Table is marked as crashed bermaksud MySQL menandakan sebuah table sebagai rosak, lalu operasi baca atau tulis pada table tersebut mengalami masalah. Error biasanya berbunyi: Table './database/nama_table' is marked as crashed and should be repaired atau Incorrect key file for table. Ini petanda terdapat masalah pada file table, index, atau integrity table.

Masalah ini paling kerap berlaku pada table MyISAM. MyISAM adalah engine lama yang fokus kepada speed baca, tapi ciri recovery selepas crash tidak sekuat InnoDB. Jika server shutdown tiba-tiba, proses tulis ke disk tergendala, atau servis MySQL terhenti tanpa closure yang betul, table MyISAM mudah rosak. Sementara InnoDB pula lebih tahan lasak berkat log transaksi dan recovery, namun itu tidak bermaksud InnoDB bebas dari masalah. Biasanya error InnoDB berkaitan table space, disk, transaction log atau data dictionary.

Punca utama error ini

Repair melalui phpMyAdmin mungkin nampak cukup, tapi jika punca sebenar tidak dikenalpasti, masalah sama boleh berulang dalam beberapa jam atau hari. Berikut ialah punca-punca utama yang sering ditemui:

  • Server shutdown tiba-tiba: Gangguan elektrik, hardware reset, atau OS crash ketika MySQL menulis ke table boleh menyebabkan kerosakan.
  • Disk penuh: Jika MySQL tidak boleh menulis file sementara, index atau update table, integrity data boleh terjejas. Risiko meningkat jika penggunaan disk melebihi 90%.
  • MySQL force stop: Contoh seperti kill -9, jika dilakukan waktu trafik tulis tinggi, boleh merosakkan table MyISAM.
  • Trafik tulis yang tinggi: Table log, counter, session atau search yang kerap di-update dan menggunakan MyISAM berisiko mudah crash.
  • Plugin atau tema bermasalah: Sistem seperti WordPress, plugin yang tidak ditulis dengan baik boleh menghasilkan query berlebihan dan menyebabkan table lock.
  • Masalah hardware atau filesystem: Disk bad sector, I/O error atau filesystem corrupt boleh jejaskan file database.
  • Versi MySQL lama: Versi lama kurang cekap dari segi performance, locking dan recovery.

Langkah keselamatan sebelum repair

Repair database biasanya selamat, tetapi apa-apa operasi pada table rosak tidak menjamin tiada kehilangan data. Untuk production/live site, backup harus menjadi keutamaan.

1. Backup database terkini

Sebelum mula repair di phpMyAdmin, export database secara penuh. Walaupun table rosak, data yang masih boleh dibaca perlu di-backup. Di phpMyAdmin, pilih database, klik tab Export, pilih kaedah “Custom” jika boleh dan simpan dalam format SQL. Untuk database besar, export boleh timeout; gunakan alat backup dari control panel hosting atau mysqldump melalui SSH jika ada akses. Jika belum ada policy backup yang tetap, rujuk Penyelesaian sandaran hosting untuk panduan.

2. Kenal pasti table yang rosak

Nama table biasanya ada dalam error message. Contoh WordPress: wp_options, wp_posts, wp_comments, wp_actionscheduler_actions. Untuk custom software, cari nama table di log aplikasi, log error PHP atau error log MySQL. Kenal pasti table yang rosak supaya tidak repair semua table tanpa perlu.

3. Aktifkan mode penyelenggaraan singkat

Jika table sedang di-repair dan ada data baru ditulis, proses boleh gagal atau data jadi tidak konsisten. Untuk website dengan trafik tinggi, letakkan site dalam mode penyelenggaraan selama 2-5 minit. Untuk WordPress, gunakan plugin maintenance; untuk custom, buat halaman sementara atau redirect di web server. Pastikan SSL aktif untuk pengunjung; jika ada isu certificate, boleh rujuk Sijil SSL.

Cara repair table MySQL dengan phpMyAdmin

phpMyAdmin memudahkan repair table untuk pengguna yang tidak mahir command line. Langkah di bawah sesuai untuk cPanel, Plesk dan panel hosting lain.

Langkah 1: Login phpMyAdmin dari panel hosting

Login ke control panel hosting, cari bahagian database dan buka phpMyAdmin. Jika ada banyak akaun hosting atau domain, pastikan pilih yang betul. Salah repair biasanya tidak merosakkan site, tapi buang masa dan boleh menyebabkan repair di environment staging bukan production. Jika domain dan hosting bercampur, boleh semak Pengurusan domain.

Langkah 2: Pilih database yang betul

Pilih database yang digunakan oleh website di menu sebelah kiri. Untuk WordPress, nama database boleh dilihat di fail wp-config.php pada baris DB_NAME. Untuk PHP custom, biasanya di config.php, .env atau database.php. Jika ada banyak website di server, langkah ini sangat penting.

Langkah 3: Tandakan table yang rosak

Bila database dibuka, semua table akan disenaraikan. Cari table yang disebut dalam error dan tandakan kotak di sebelahnya. Jika ada lebih satu table bermasalah, tandakan semuanya; namun mulakan repair dengan table paling penting dahulu. Untuk lihat jenis table sama ada MyISAM atau InnoDB, periksa kolum Type atau Engine.

Langkah 4: Jalankan Repair Table

Selepas pilih table yang rosak, di bahagian bawah pilih menu drop-down dan klik Repair Table. phpMyAdmin akan jalankan REPAIR TABLE nama_table di backend. Status akan dipaparkan sama ada berjaya, ada warning, atau gagal. Jika berjaya, biasanya status OK akan keluar. Table besar mungkin ambil masa beberapa minit; jangan refresh atau tutup browser semasa proses.

Langkah 5: Semak table dan test website

Selepas repair, boleh gunakan menu Check Table untuk semak integrity. Kemudian, uji homepage, admin panel, search, listing produk dan fungsi login pengguna. Untuk WordPress, simpan permalinks, clear cache dan semak log error.

Penjelasan fungsi repair dalam phpMyAdmin

Selain repair, phpMyAdmin menawarkan beberapa fungsi maintenance table lain. Setiap fungsi ada tujuannya tersendiri; jangan guna tanpa faham.

Penjelasan fungsi repair dalam phpMyAdmin
PilihanFungsiBila digunakan
Check TableSemak struktur dan status error table.Digunakan sebelum dan selepas repair untuk verifikasi.
Repair TableRepair table dan index MyISAM yang rosak.Pilihan utama jika dapat error Table is marked as crashed.
Optimize TableKosongkan ruang dari rekod yang telah dipadam, kemaskan table.Selepas banyak delete/update untuk naikkan performance.
Analyze TableKemaskini statistik index untuk query planner.Bila ada penurunan performance atau syak index digunakan tidak betul.

Secara ringkas, Repair Table ialah fungsi utama untuk error Table is marked as crashed. Optimize dan Analyze berguna untuk maintenance, tapi tidak membaiki table yang rosak.

Kenapa repair InnoDB table berbeza?

Untuk table InnoDB, fungsi Repair Table di phpMyAdmin tidak selalu berfungsi seperti MyISAM. Ini kerana InnoDB tidak gunakan repair file yang mudah seperti MyISAM. InnoDB bergantung pada transaction log, redo log, undo log dan struktur table space untuk integrity. Jadi, jika error InnoDB, selalunya perlu semak log MySQL, status disk, restore dari backup atau gunakan recovery mode lanjutan.

Jika error melibatkan MyISAM, repair di phpMyAdmin biasanya berjaya. Namun untuk InnoDB, jika error seperti corrupt, tablespace, cannot open table muncul, jangan repair secara rawak; backup dahulu dan semak log server. Dapatkan bantuan hosting provider jika data sangat penting. Untuk data e-dagang, elakkan trial-and-error tanpa professional.

Jika repair gagal, apa perlu buat?

Repair table melalui phpMyAdmin tidak selalu berjaya. Table terlalu besar, file terlalu corrupt, masalah disk atau kekurangan permission boleh menyebabkan proses tidak selesai. Ikuti langkah di bawah jika repair gagal:

  • Restore dari backup: Cara paling selamat ialah restore dari backup yang paling hampir dengan waktu error. Simpan database rosak sebagai fail berasingan sebelum restore.
  • Gunakan myisamchk melalui SSH: Untuk table MyISAM, jika ada akses server, boleh guna myisamchk. Hentikan servis MySQL atau pastikan tiada akses ke table sebelum jalankan.
  • REPAIR TABLE command: Dari tab SQL di phpMyAdmin, jalankan REPAIR TABLE nama_table;. Untuk table besar, cuba opsi QUICK atau EXTENDED.
  • Semak disk dan inode: Jika disk atau inode penuh, repair akan gagal. Keluarkan fail backup, log dan temporary yang tidak perlu dahulu.
  • Periksa log error server: Log error MySQL, log server web dan log error PHP penting untuk cari punca sebenar.

Untuk shared hosting, anda mungkin tiada akses SSH atau tidak boleh hentikan servis. Dalam kes ini, hantarkan error message, nama table, waktu error dan tarikh backup terakhir kepada support team supaya proses lebih cepat.

Pencegahan supaya error tidak berulang

Repair sekali tidak bermakna masalah selesai selama-lamanya; pencegahan bergantung kepada disiplin maintenance dan infrastruktur.

Pertimbangkan convert table MyISAM ke InnoDB

Untuk aplikasi web terbaru, InnoDB lebih selamat dan tahan. Ciri locking pada per-row, transaksi dan recovery selepas crash lebih baik berbanding MyISAM. Convert boleh dilakukan dengan ALTER TABLE nama_table ENGINE=InnoDB;. Untuk live site, test di staging dahulu dan buat backup penuh. Sesetengah software lama bergantung pada fulltext index atau ciri unik MyISAM.

Backup berkala yang boleh di-restore

Backup mesti bukan sekadar diambil, tetapi boleh di-restore bila perlu. Backup harian, backup penuh mingguan dan backup manual sebelum perubahan besar adalah amalan terbaik. Simpan sekurang-kurangnya backup 7 hari untuk website kecil/menengah. Untuk laman e-dagang, backup lebih kerap atau gunakan binlog recovery.

Monitor penggunaan disk dan resource

Penggunaan disk melebihi 85-90% perlu diberi perhatian. MySQL perlukan ruang untuk table temporary, log dan index. Pantau juga CPU, RAM dan waktu I/O. Website yang selalu mencapai had resource lebih mudah dapat error database. Jika trafik meningkat, upgrade hosting ke pakej lebih tinggi; boleh rujuk Hosting Korporat atau Hosting berprestasi tinggi.

Periksa update plugin, tema dan software

Software lama bukan saja ada risiko keselamatan, tapi boleh hantar query tidak efisien ke database. Untuk WordPress, buang plugin tidak digunakan, bersihkan table log yang membebankan database dan elakkan plugin tidak dipercayai. Test update software di staging sebelum live untuk elak error table atau index.

Shutdown server dengan cara betul dan buat jadual maintenance

Jika urus VPS atau dedicated server, elakkan force stop servis MySQL. Shutdown secara teratur, lakukan update waktu trafik rendah dan semak log selepas reboot. Jadual maintenance yang konsisten boleh kurangkan risiko table rosak, terutama untuk database yang sibuk.

Nota khas untuk laman WordPress

WordPress biasanya paparkan error database secara umum: error semasa sambungan ke database. Tapi detail error boleh dilihat di log error. Table yang sering terjejas ialah wp_options, wp_posts, wp_postmeta, wp_comments dan table scheduler atau log dari plugin. Jika wp_options rosak, setting global tidak boleh dibaca; jika wp_posts, content tidak keluar; table log plugin yang rosak boleh menyebabkan admin panel lambat.

WordPress ada fungsi repair database terbina. Tambah define('WP_ALLOW_REPAIR', true); dalam wp-config.php, lalu jalankan /wp-admin/maint/repair.php. Selepas selesai, pastikan baris tersebut dibuang, supaya repair page tidak boleh diakses secara terbuka. Kaedah phpMyAdmin lebih terkawal kerana anda boleh pilih table mana yang mahu dibaiki. Untuk hosting WordPress yang dioptimumkan, rujuk Hosting WordPress.

Bila perlu dapatkan bantuan profesional?

Tidak semua error MySQL boleh dibaiki sendiri. Jika berlaku situasi berikut, dapatkan bantuan:

  • Table yang rosak mengandungi data pesanan, pembayaran, ahli atau kewangan.
  • Error masih muncul selepas repair atau table hilang dari senarai.
  • Database lebih besar dari beberapa GB dan repair di phpMyAdmin timeout.
  • Error berkaitan InnoDB tablespace atau redo log.
  • Disk, I/O atau filesystem error.
  • Tiada backup bersih yang terkini.

Semasa buat tiket support, sertakan error message penuh, nama database dan table, waktu error mula, update/migrasi terakhir dan tarikh backup. Maklumat ini mempercepatkan proses troubleshooting.

Checklist ringkas

Untuk tindakan segera, ikut urutan berikut:

  • Kenal pasti nama table yang rosak dari error message.
  • Buat backup database yang ada.
  • Aktifkan mode penyelenggaraan singkat.
  • Pilih database yang betul di phpMyAdmin.
  • Tandakan table bermasalah dan jalankan Repair Table.
  • Check table dan test fungsi website.
  • Pantau disk, resource, backup dan jenis table untuk elak error berulang.

Soalan Lazim

Adakah error Table is marked as crashed bermaksud kehilangan data?

Tidak semestinya. Kebanyakan table MyISAM boleh diselamatkan dengan Repair Table di phpMyAdmin. Tapi jika kerosakan teruk, ada kemungkinan sebahagian data hilang. Sebab itu backup sebelum repair sangat penting.

Adakah repair table di phpMyAdmin selamat?

Kebiasaannya selamat; tapi semua operasi maintenance pada database live ada risiko. Backup, pilih table dengan betul dan jika boleh, letakkan site dalam mode penyelenggaraan. Untuk table besar atau kritikal, dapatkan bantuan profesional.

Bolehkah Repair Table digunakan untuk InnoDB?

InnoDB tidak support Repair Table seperti MyISAM. Untuk masalah InnoDB, semak log MySQL, status disk dan restore dari backup jika perlu. Repair rawak boleh meningkatkan risiko kehilangan data.

Kenapa error ini sering berulang?

Jika error berulang, punca sebenar belum diselesaikan. Antara sebab utama: disk penuh, shutdown servis, trafik tulis tinggi, plugin rosak, MySQL lama atau masih guna MyISAM. Kenal pasti punca untuk solusi kekal.

Perlu hubungi hosting sebelum repair?

Untuk error MyISAM yang mudah, boleh repair sendiri selepas backup. Tapi jika data kritikal, tiada backup, database besar atau error InnoDB, lebih selamat hubungi support hosting.

Kesimpulan

Error Table is marked as crashed pada MySQL kerap berlaku pada table MyISAM dan selalunya boleh dibaiki melalui phpMyAdmin. Amalan terbaik ialah backup dahulu, kenal pasti table rosak, repair melalui phpMyAdmin dan atasi punca error. Backup berkala, resource server mencukupi, penggunaan InnoDB dan software terkini dapat mengurangkan risiko error berulang. Jika error selalu berlaku, semak infrastruktur hosting dan pilih solusi yang sesuai di Hostragons atau dapatkan nasihat dari support team.

Kongsikan artikel ini:

Pasukan Hostragons

Panduan terkini daripada pasukan pakar kami tentang pengehosan, pelayan dan nama domain. Mari kita cari penyelesaian yang tepat untuk projek anda bersama-sama.

Hubungi Kami