วิธีแก้ไขข้อผิดพลาด

วิธีแก้ไขปัญหา MySQL "Table is marked as crashed" ด้วย phpMyAdmin แบบมือโปร

  • 29 ใช้เวลาอ่านไม่กี่นาที
  • ทีมงาน Hostragons
วิธีแก้ไขปัญหา MySQL "Table is marked as crashed" ด้วย phpMyAdmin แบบมือโปร

ข้อผิดพลาด MySQL "Table is marked as crashed" ส่วนใหญ่เกิดจากตารางที่ใช้ระบบเก็บข้อมูล MyISAM เสียหาย ทำให้ MySQL ไม่สามารถอ่านข้อมูลได้อย่างปลอดภัย วิธีแก้ไขที่รวดเร็วที่สุดคือ หลังจากทำสำรองข้อมูลฐานข้อมูลแล้ว ให้เลือกตารางที่มีปัญหาผ่าน phpMyAdmin แล้วสั่ง ซ่อมแซมตาราง แต่ข้อผิดพลาดนี้บางครั้งไม่ใช่เรื่องง่ายที่จะแก้ได้ด้วยคลิกเดียว เพราะอาจเกิดจากเซิร์ฟเวอร์ปิดตัวกะทันหัน พื้นที่ดิสก์เต็ม คำสั่งผิดพลาด ปริมาณการเขียนข้อมูลสูง หรือการตั้งค่า MySQL รุ่นเก่า ในบทความนี้เราจะพาคุณไล่ตรวจสอบสาเหตุ วิธีซ่อมแซมผ่าน phpMyAdmin การตรวจสอบสำรองข้อมูลก่อนทำ และวิธีป้องกันไม่ให้เกิดปัญหาซ้ำอีกอย่างละเอียด

เว็บไซต์ของคุณอาจใช้ WordPress, OpenCart, โปรแกรม PHP เฉพาะ หรือระบบฟอรั่ม เมื่อเกิดปัญหาตาราง MySQL เสียหาย ผู้ใช้งานอาจเจอหน้าจอว่าง ข้อผิดพลาด 500 หมดเวลาเชื่อมต่อ หรือข้อผิดพลาดฐานข้อมูลที่ไม่คาดคิดในแผงควบคุม โดยเฉพาะเว็บอีคอมเมิร์ซ หากตารางคำสั่งซื้อ สินค้า เซสชัน หรือรถเข็นมีปัญหา การล่มชั่วคราวเพียงไม่กี่นาที ก็อาจทำให้สูญเสียรายได้ได้ ดังนั้นระหว่างการซ่อมแซม ต้องรักษาความสมบูรณ์ของข้อมูลและเข้าใจสาเหตุของปัญหาอย่างถ่องแท้ โครงสร้างพื้นฐานโฮสติ้งที่เชื่อถือได้ การสำรองข้อมูลเป็นประจำ และการเลือกใช้ระบบเก็บข้อมูลที่เหมาะสมจะช่วยลดความเสี่ยงเหล่านี้ได้มาก ในจุดนี้ หากต้องการโครงสร้างที่จัดการง่ายและติดตามได้ แนะนำให้พิจารณา เว็บโฮสติง Hostragons หรือถ้าโปรเจ็กต์ต้องการทรัพยากรสูง อาจเลือกใช้ เซิร์ฟเวอร์ VPS Hostragons

ข้อผิดพลาด Table is marked as crashed คืออะไร?

ข้อผิดพลาด Table is marked as crashed หมายความว่า เซิร์ฟเวอร์ MySQL ได้ทำเครื่องหมายว่าตารางนั้นเกิดความเสียหาย และเกิดปัญหาในการอ่านหรือเขียนข้อมูลบนตารางนั้น ข้อความแจ้งปัญหามักจะแสดงในรูปแบบเช่น: Table './ฐานข้อมูล/ชื่อตาราง' is marked as crashed and should be repaired หรือ Incorrect key file for table ข้อความนี้บ่งชี้ว่ามีปัญหาที่ไฟล์ตาราง ดัชนี หรือความสมบูรณ์ของตาราง

ข้อผิดพลาดนี้พบได้บ่อยกับตาราง MyISAM ซึ่งเป็นระบบเก็บข้อมูลรุ่นเก่าเน้นการอ่านที่รวดเร็ว แต่ความสามารถในการกู้คืนจากการล่มไม่ดีเท่ากับ InnoDB หากเซิร์ฟเวอร์ปิดอย่างกะทันหัน การเขียนข้อมูลถูกตัดกลางคัน หรือบริการ MySQL หยุดทำงานโดยไม่ปิดอย่างถูกต้อง ตาราง MyISAM จะเสียหายได้ง่ายกว่า InnoDB ที่มีระบบ transaction log และกลไกกู้คืนหลังล่มช่วยให้ทนทานกว่า แต่ก็ไม่ได้หมายความว่า InnoDB จะไม่มีปัญหาเลย ปัญหาของ InnoDB มักจะแสดงในรูปแบบของพื้นที่ตารางผิดปกติ ดิสก์มีปัญหา transaction log เสีย หรือปัญหาใน data dictionary

สาเหตุหลักที่พบบ่อยของข้อผิดพลาด

แม้ว่าการซ่อมแซมผ่าน phpMyAdmin จะช่วยแก้ปัญหาได้ในเบื้องต้น แต่ถ้าไม่หาสาเหตุที่แท้จริง ปัญหาอาจเกิดซ้ำได้ในไม่กี่ชั่วโมงหรือวันข้างหน้า สาเหตุที่เจอบ่อยในสนามจริง ได้แก่:

  • เซิร์ฟเวอร์ปิดตัวกะทันหัน: เช่น ไฟดับ รีเซ็ตฮาร์ดแวร์ หรือระบบปฏิบัติการล่มในขณะที่ MySQL กำลังเขียนข้อมูล จะทำให้ตารางเสียหายได้
  • พื้นที่ดิสก์เต็ม: ถ้า MySQL ไม่สามารถเขียนไฟล์ชั่วคราว ดัชนี หรืออัพเดตตารางได้เนื่องจากพื้นที่เต็ม จะทำให้ข้อมูลเสียหาย พื้นที่ดิสก์ที่ใช้เกิน 90% ถือว่ามีความเสี่ยงสูง
  • การบังคับปิดบริการ MySQL: การสั่ง kill -9 หรือปิดโปรเซสอย่างรุนแรง โดยเฉพาะช่วงที่มีการเขียนข้อมูลหนัก อาจทำให้ตาราง MyISAM เสียหาย
  • ปริมาณเขียนข้อมูลสูง: ตารางที่ต้องอัพเดตบ่อย เช่น ตารางล็อก เคาน์เตอร์ เซสชัน หรือการค้นหา หากใช้ MyISAM จะมีความอ่อนไหวต่อความเสียหายมากกว่า
  • ปลั๊กอินหรือธีมที่มีข้อผิดพลาด: ระบบเช่น WordPress ที่ปลั๊กอินเขียนโค้ดไม่ดี อาจทำให้เกิดคำสั่ง SQL ผิดพลาดและล็อกตารางจนเกิดปัญหาได้
  • ปัญหาด้านฮาร์ดแวร์หรือระบบไฟล์: เช่น bad sector บนดิสก์ ข้อผิดพลาด I/O หรือระบบไฟล์เสียหาย อาจกระทบกับไฟล์ฐานข้อมูล
  • เวอร์ชัน MySQL เก่า: เวอร์ชันที่ไม่อัพเดตอาจมีปัญหาเรื่องประสิทธิภาพ การล็อก และการกู้คืนที่อ่อนแอกว่า

ขั้นตอนสำคัญก่อนซ่อมแซม

การซ่อมแซมฐานข้อมูลส่วนใหญ่ปลอดภัย แต่ทุกการแก้ไขบนตารางที่เสียหายยังมีความเสี่ยงข้อมูลสูญหาย โดยเฉพาะกับระบบที่ใช้งานจริง ดังนั้นการสำรองข้อมูลจึงต้องมาก่อนเสมอ

1. สำรองข้อมูลฐานข้อมูลปัจจุบัน

ก่อนเริ่มซ่อมแซมด้วย phpMyAdmin ควรส่งออกข้อมูลสำรองล่าสุด แม้ว่าตารางจะเสียหายแต่ข้อมูลที่อ่านได้ยังมีค่ามากในกรณีเกิดปัญหาเพิ่มเติม ใน phpMyAdmin ให้เลือกฐานข้อมูลจากเมนูด้านซ้าย คลิกแท็บ ส่งออก เลือกวิธีส่งออกแบบกำหนดเอง (Custom) และเลือกฟอร์แมตเป็น SQL หากฐานข้อมูลใหญ่ การส่งออกอาจใช้เวลานานจนหมดเวลา ในกรณีนี้ควรใช้เครื่องมือสำรองข้อมูลผ่านแผงควบคุมโฮสติ้งหรือสั่ง mysqldump ผ่าน SSH โครงการที่ไม่มีนโยบายสำรองข้อมูลสม่ำเสมอ ควรศึกษาข้อมูลเกี่ยวกับ โซลูชันการสำรองข้อมูลโฮสติ้ง

2. ระบุว่าตารางใดเสียหาย

ข้อความข้อผิดพลาดจะบอกชื่อตาราง เช่น ใน WordPress อาจเป็น wp_options, wp_posts, wp_comments หรือ wp_actionscheduler_actions สำหรับซอฟต์แวร์เฉพาะชื่อโต๊ะอาจเจอในล็อกของแอพ PHP หรือ MySQL error log การรู้ว่าตารางใดเสียจะช่วยลดการแก้ไขที่ไม่จำเป็นในฐานข้อมูลทั้งหมด

3. ตั้งเว็บไซต์เข้าสู่โหมดบำรุงรักษาชั่วคราว

ระหว่างซ่อมแซม หากมีการเขียนข้อมูลใหม่ลงตารางที่เสียหาย อาจทำให้ซ่อมแซมล้มเหลวหรือข้อมูลไม่สอดคล้องกัน สำหรับเว็บที่มีผู้ใช้จำนวนมาก ควรใช้โหมดบำรุงรักษา 2-5 นาที เพื่อให้การซ่อมแซมปลอดภัยขึ้น หากใช้งาน WordPress ให้ใช้ปลั๊กอินโหมดบำรุงรักษา หรือระบบที่เขียนเอง สามารถใช้หน้าบำรุงรักษาชั่วคราวหรือการเปลี่ยนเส้นทางในเว็บเซิร์ฟเวอร์ สำหรับประสบการณ์ผู้ใช้ที่ปลอดภัย ควรเปิดใช้งาน SSL ในหน้าบำรุงรักษา หากมีปัญหาเรื่องใบรับรอง SSL สามารถดูตัวเลือกได้ที่ ใบรับรอง SSL

วิธีซ่อมแซมตาราง MySQL ด้วย phpMyAdmin

phpMyAdmin ช่วยให้ผู้ใช้ที่ไม่มีความรู้เชิงเทคนิคเชิงคำสั่ง SQL สามารถซ่อมแซมตาราง MySQL ได้ง่าย ขั้นตอนต่อไปนี้ใช้ได้กับแผงควบคุมทั่วไป เช่น cPanel, Plesk หรืออื่นๆ

ขั้นตอนที่ 1: เข้าสู่ phpMyAdmin ผ่านแผงควบคุมโฮสติ้ง

ล็อกอินเข้าสู่แผงควบคุมโฮสติ้งของคุณ แล้วไปที่ส่วนของฐานข้อมูล เปิดลิงก์ phpMyAdmin หากคุณมีหลายบัญชีโฮสติ้งหรือหลายโดเมน ตรวจสอบให้แน่ใจว่าคุณกำลังจัดการกับบัญชีและฐานข้อมูลที่ถูกต้อง การทำงานผิดฐานข้อมูลอาจไม่ได้ทำลายข้อมูลโดยตรง แต่เสียเวลาและอาจทำให้ซ่อมในระบบทดแทนแทนระบบจริง ตรวจสอบการจับคู่โดเมนและโฮสติ้งได้ที่ การจัดการโดเมน

ขั้นตอนที่ 2: เลือกฐานข้อมูลที่ถูกต้อง

จากเมนูด้านซ้าย เลือกฐานข้อมูลที่เว็บไซต์ของคุณใช้งาน สำหรับ WordPress ชื่อฐานข้อมูลดูได้จากไฟล์ wp-config.php ในบรรทัด DB_NAME สำหรับโปรเจ็กต์ PHP เฉพาะ ชื่อฐานข้อมูลมักอยู่ในไฟล์ config.php, .env หรือ database.php หากเซิร์ฟเวอร์เดียวมีหลายเว็บไซต์ การตรวจสอบชื่อนี้สำคัญมาก

ขั้นตอนที่ 3: เลือกตารางที่เสียหาย

เมื่อเปิดฐานข้อมูลแล้ว จะเห็นรายชื่อตารางทั้งหมด ค้นหาตารางที่มีปัญหาจากข้อความผิดพลาด แล้วติ๊กเลือกช่องทางซ้าย หากมีหลายตารางเสียหาย สามารถเลือกทั้งหมดได้ แต่แนะนำให้เริ่มจากตารางที่สำคัญที่สุดก่อน ดูคอลัมน์ ชนิด หรือ Engine เพื่อดูว่าเป็น MyISAM หรือไม่

ขั้นตอนที่ 4: สั่ง "ซ่อมแซมตาราง"

หลังเลือกตารางแล้ว เลื่อนลงไปที่เมนูแบบเลื่อนลงที่ด้านล่างของหน้าจอ เลือก ซ่อมแซมตาราง phpMyAdmin จะทำคำสั่ง REPAIR TABLE ชื่อตาราง ในเบื้องหลัง เมื่อเสร็จแล้วจะแสดงผลลัพธ์ว่า สำเร็จ มีคำเตือน หรือไม่สำเร็จ โดยผลลัพธ์ที่ดีมักแสดงว่า status OK สำหรับตารางขนาดใหญ่ อาจใช้เวลาหลายนาทีในระหว่างนี้อย่ากดรีเฟรชหรือปิดเบราว์เซอร์

ขั้นตอนที่ 5: ตรวจสอบตารางและทดสอบเว็บไซต์

หลังจากซ่อมแซมเสร็จ สามารถสั่ง ตรวจสอบตาราง จากเมนูเดียวกันเพื่อตรวจสอบความสมบูรณ์ จากนั้นลองเปิดหน้าเว็บหลัก แผงควบคุม ฟังก์ชันการค้นหา รายการสินค้า และหน้าล็อกอิน ถ้าใช้ WordPress ควรบันทึกการตั้งค่าลิงก์ถาวร ล้างแคช และตรวจสอบบันทึกข้อผิดพลาดเพื่อความแน่ใจ

ความหมายของตัวเลือกซ่อมแซมใน phpMyAdmin

ใน phpMyAdmin นอกจากซ่อมแซมตารางแล้ว ยังมีตัวเลือกสำหรับบำรุงรักษาตารางอื่นๆ แต่ละตัวเลือกมีจุดประสงค์เฉพาะ หลีกเลี่ยงการใช้ผิดวัตถุประสงค์

ความหมายของตัวเลือกซ่อมแซมใน phpMyAdmin
ตัวเลือกทำหน้าที่อะไร?ใช้เมื่อไหร่?
ตรวจสอบตารางตรวจสอบโครงสร้างตารางและหาข้อผิดพลาดใช้ก่อนและหลังซ่อมแซมเพื่อยืนยันความถูกต้อง
ซ่อมแซมตารางแก้ไขตาราง MyISAM และดัชนีที่เสียหายใช้เมื่อเจอข้อผิดพลาด Table is marked as crashed
เพิ่มประสิทธิภาพตารางลดช่องว่างที่เกิดจากการลบข้อมูลและจัดเรียงตารางใช้หลังจากลบหรือแก้ไขข้อมูลจำนวนมาก
วิเคราะห์ตารางอัปเดตสถิติของดัชนีเพื่อช่วยวางแผนการค้นหาข้อมูลใช้เมื่อระบบทำงานช้าลงหรือสงสัยว่าดัชนีไม่ถูกใช้งานอย่างถูกต้อง

สรุปแล้ว สำหรับข้อผิดพลาด Table is marked as crashed ตัวเลือกที่เหมาะสมคือ ซ่อมแซมตาราง ส่วนตัวเลือกเพิ่มประสิทธิภาพและวิเคราะห์เป็นเครื่องมือบำรุงรักษาที่ช่วยปรับปรุงประสิทธิภาพ แต่ไม่สามารถแก้ไขตารางเสียได้โดยตรง

ทำไมตาราง InnoDB ถึงแตกต่าง?

ใน phpMyAdmin ตัวเลือก ซ่อมแซมตาราง สำหรับตาราง InnoDB อาจไม่ทำงานตามที่คาด เพราะ InnoDB ไม่ได้ใช้โครงสร้างไฟล์แบบ MyISAM ที่ง่ายต่อการซ่อมแซม InnoDB ใช้ระบบ transaction log, redo log, undo log และโครงสร้างพื้นที่ตารางเพื่อรักษาความสมบูรณ์ข้อมูล ดังนั้นการแก้ไขปัญหา InnoDB มักต้องดูบันทึก MySQL ตรวจสอบสถานะดิสก์ กู้คืนจากสำรองข้อมูล หรือใช้โหมดกู้คืนขั้นสูง

ถ้าข้อผิดพลาดแจ้งว่าตารางเป็น MyISAM การซ่อมแซมผ่าน phpMyAdmin มักได้ผลดี แต่ถ้าเป็น InnoDB และขึ้นข้อความเช่น corrupt, tablespace, cannot open table ควรสำรองข้อมูลก่อนและตรวจสอบบันทึกเซิร์ฟเวอร์อย่างละเอียด ในกรณีนี้การขอความช่วยเหลือจากผู้ให้บริการโฮสติ้งจะปลอดภัยกว่า โดยเฉพาะถ้าเป็นข้อมูลอีคอมเมิร์ซที่สำคัญ

ถ้าซ่อมแซมไม่สำเร็จ ควรทำอย่างไร?

การซ่อมแซมด้วย phpMyAdmin อาจไม่สำเร็จเสมอไป โดยเฉพาะตารางขนาดใหญ่ ไฟล์เสียหายหนัก ปัญหาดิสก์ หรือข้อจำกัดสิทธิ์ ในกรณีนี้ลองทำตามขั้นตอนต่อไปนี้:

  • กู้คืนจากสำรองข้อมูล: วิธีที่ปลอดภัยที่สุดคือคืนค่าจากแบ็คอัพที่เก็บไว้ก่อนเกิดปัญหา ควรเก็บฐานข้อมูลที่เสียไว้แยกต่างหากก่อนคืนค่า
  • ใช้คำสั่ง myisamchk ผ่าน SSH: สำหรับตาราง MyISAM ถ้ามีสิทธิ์เข้าถึงเซิร์ฟเวอร์ สามารถใช้คำสั่ง myisamchk เพื่อซ่อมแซมได้ โดยต้องหยุดบริการ MySQL หรือปิดการเข้าถึงตารางระหว่างทำงาน
  • ใช้คำสั่ง REPAIR TABLE ผ่าน SQL: ในแท็บ SQL ของ phpMyAdmin ลองรันคำสั่ง REPAIR TABLE ชื่อตาราง; สำหรับตารางใหญ่ อาจเพิ่มคำสั่ง QUICK หรือ EXTENDED เพื่อประสิทธิภาพ
  • ตรวจสอบพื้นที่ดิสก์และ inode: ถ้าพื้นที่หรือ inode เต็ม จะทำให้การซ่อมแซมล้มเหลว ควรลบไฟล์สำรองเก่าๆ ไฟล์ล็อก หรือไฟล์ชั่วคราวที่ไม่จำเป็น
  • วิเคราะห์บันทึกข้อผิดพลาดเซิร์ฟเวอร์: ไฟล์ MySQL error log, เว็บเซิร์ฟเวอร์ log และ PHP error log จะช่วยระบุสาเหตุได้

ถ้าใช้โฮสติ้งแบบแชร์ อาจไม่มีสิทธิ์เข้าถึง SSH หรือหยุดบริการเองได้ แนะนำแจ้งทีมซัพพอร์ตโดยระบุข้อความผิดพลาด ชื่อตาราง เวลาที่เกิด และวันที่สำรองข้อมูลล่าสุด เพื่อช่วยเร่งแก้ไข

วิธีป้องกันไม่ให้ปัญหาซ้ำอีก

การซ่อมแซมเพียงครั้งเดียวแก้ปัญหาได้ชั่วคราว แต่การแก้ปัญหาอย่างถาวรต้องปรับปรุงโครงสร้างพื้นฐานและดูแลอย่างต่อเนื่อง ต่อไปนี้คือแนวทางช่วยลดความเสี่ยงการเสียหายของตาราง MySQL

พิจารณาแปลงตาราง MyISAM เป็น InnoDB

ในเว็บแอปสมัยใหม่ InnoDB เป็นตัวเลือกที่ปลอดภัยและเสถียรกว่า ด้วยระบบล็อครายบรรทัด การสนับสนุนธุรกรรม และความสามารถกู้คืนหลังล่ม ทำงานได้ดีกว่า MyISAM ในกรณีเขียนข้อมูลหนัก การแปลงสามารถทำได้ง่ายด้วยคำสั่ง ALTER TABLE ชื่อตาราง ENGINE=InnoDB; แต่ควรทดสอบในระบบทดสอบและสำรองข้อมูลก่อนเสมอ เพราะบางโปรแกรมเก่าอาจขึ้นกับดัชนีแบบ fulltext หรือพฤติกรรมเฉพาะของ MyISAM

ทำระบบสำรองข้อมูลสม่ำเสมอและกู้คืนได้

การสำรองข้อมูลต้องไม่ใช่แค่สำรอง แต่ต้องกู้คืนได้จริง ควรมีนโยบายสำรองข้อมูลรายวัน สำรองเต็มรายสัปดาห์ และสำรองก่อนอัปเดตใหญ่ การเก็บสำรองอย่างน้อย 7 วันเป็นมาตรฐานที่เหมาะสม สำหรับเว็บอีคอมเมิร์ซ อาจต้องสำรองถี่ขึ้นหรือใช้ระบบกู้คืนจาก binlog เพื่อป้องกันการสูญเสียคำสั่งซื้อ

ติดตามการใช้พื้นที่ดิสก์และทรัพยากรเซิร์ฟเวอร์

ตั้งค่าการแจ้งเตือนเมื่อพื้นที่ดิสก์ใช้ถึง 85-90% เพราะ MySQL ต้องใช้พื้นที่ว่างสำหรับตารางชั่วคราว ไฟล์ล็อก และดัชนี ควรตรวจสอบ CPU RAM และ I/O เป็นประจำ เว็บไซต์ที่ถูกจำกัดทรัพยากรมักเจอปัญหาฐานข้อมูล หากเว็บไซต์เติบโต อาจต้องอัปเกรดแพ็กเกจโฮสติ้ง โดยดูข้อมูลเพิ่มเติมที่ โฮสติ้งธุรกิจ หรือ hosting ที่มีประสิทธิภาพสูง

ตรวจสอบและอัปเดตปลั๊กอิน ธีม และซอฟต์แวร์

ซอฟต์แวร์เก่าไม่เพียงแต่เสี่ยงเรื่องความปลอดภัย แต่ยังอาจส่งคำสั่ง SQL ที่ไม่เหมาะสมไปยังฐานข้อมูล WordPress ควรลบปลั๊กอินที่ไม่ได้ใช้ ทำความสะอาดตารางล็อกที่ทำให้ฐานข้อมูลใหญ่เกินจำเป็น และหลีกเลี่ยงปลั๊กอินที่ไม่น่าเชื่อถือ ก่อนอัปเดต ควรทดสอบในสภาพแวดล้อม staging เพื่อป้องกันปัญหาไม่คาดฝัน

ปิดเซิร์ฟเวอร์อย่างถูกวิธีและวางแผนบำรุงรักษา

ถ้าคุณใช้ VPS หรือ dedicated server อย่าปิด MySQL ด้วยวิธีรุนแรง ควรปิดบริการอย่างเป็นระบบก่อนปิดเครื่อง ทำการอัปเดตในช่วงเวลาที่มีผู้ใช้ต่ำ และตรวจสอบบันทึกหลังรีบูต การวางแผนบำรุงรักษาจะช่วยลดความเสี่ยงการเสียหายของฐานข้อมูลในระบบที่มีผู้ใช้จำนวนมาก

หมายเหตุสำหรับเว็บไซต์ WordPress

WordPress มักจะแสดงข้อผิดพลาดฐานข้อมูลทั่วไปว่า เกิดข้อผิดพลาดขณะเชื่อมต่อฐานข้อมูล แต่ถ้าดูในบันทึก จะพบรายละเอียดตารางที่เสียหาย ตารางที่มักได้รับผลกระทบได้แก่ wp_options, wp_posts, wp_postmeta, wp_comments และตารางล็อกหรือ scheduler ของปลั๊กอินต่างๆ ถ้าตาราง wp_options เสียหาย อาจทำให้ตั้งค่าเว็บไซต์อ่านไม่ได้ wp_posts เสียหายทำให้เนื้อหาแสดงไม่ครบ ส่วนตารางล็อกเสียหายทำให้แผงควบคุมทำงานช้า

WordPress มีฟีเจอร์ซ่อมแซมฐานข้อมูลในตัว โดยเพิ่มบรรทัด define('WP_ALLOW_REPAIR', true); ในไฟล์ wp-config.php จากนั้นเข้าไปที่ /wp-admin/maint/repair.php เพื่อซ่อมแซม แต่หลังทำเสร็จควรลบบรรทัดนี้ออกทันที เพราะหน้าแก้ไขนี้เปิดให้ทุกคนเข้าถึงได้ วิธีนี้ช่วยได้ดีแต่ phpMyAdmin ให้ความแม่นยำและควบคุมได้มากกว่า หากต้องการโฮสติ้งที่ปรับแต่งพิเศษสำหรับ WordPress ลองดูที่ โฮสติ้ง WordPress

เมื่อไรควรขอความช่วยเหลือจากผู้เชี่ยวชาญ?

ข้อผิดพลาด MySQL ไม่ใช่ทุกกรณีที่จะแก้ไขได้ด้วยตัวเอง ถ้าคุณเจอสถานการณ์ต่อไปนี้ ควรขอความช่วยเหลือมืออาชีพ:

  • ตารางเสียหายมีข้อมูลคำสั่งซื้อ ชำระเงิน สมาชิก หรือข้อมูลการเงิน
  • ซ่อมแซมแล้วปัญหายังไม่หาย หรือบางตารางหายไป
  • ฐานข้อมูลมีขนาดหลายกิกะไบต์ และ phpMyAdmin เกิดหมดเวลา
  • พบข้อผิดพลาดเกี่ยวกับ InnoDB tablespace หรือ redo log
  • ระบบแจ้งปัญหาดิสก์ I/O error หรือไฟล์ระบบเสียหาย
  • ไม่มีสำรองข้อมูลที่สะอาดล่าสุด

เวลาติดต่อขอความช่วยเหลือ ควรแจ้งข้อความข้อผิดพลาดเต็ม รูปแบบฐานข้อมูลและชื่อตาราง ปัญหาเริ่มเมื่อไหร่ และวันเวลาที่สำรองข้อมูลล่าสุด เพื่อให้ทีมงานช่วยแก้ไขได้รวดเร็วขึ้น

รายการตรวจสอบฉุกเฉิน

เวลาต้องแก้ไขด่วน คุณสามารถทำตามขั้นตอนนี้ได้เลย:

  • ตรวจสอบข้อความข้อผิดพลาดเพื่อระบุตารางที่เสียหาย
  • สำรองข้อมูลฐานข้อมูลในปัจจุบัน
  • ตั้งเว็บไซต์เข้าสู่โหมดบำรุงรักษาชั่วคราว
  • เลือกฐานข้อมูลที่ถูกต้องใน phpMyAdmin
  • เลือกตารางที่เสียและใช้คำสั่งซ่อมแซมตาราง
  • ตรวจสอบตารางอีกครั้งและทดสอบฟังก์ชันเว็บไซต์
  • ติดตามตรวจสอบพื้นที่ดิสก์ ทรัพยากร สำรองข้อมูล และประเภทระบบเก็บข้อมูลเพื่อลดความเสี่ยง

คำถามที่พบบ่อย

ข้อผิดพลาด MySQL Table is marked as crashed หมายความว่าข้อมูลหายหรือไม่?

ไม่จำเป็นเสมอไปที่จะทำให้ข้อมูลสูญหาย ตาราง MyISAM ส่วนใหญ่สามารถกู้คืนได้ด้วยการซ่อมแซมผ่าน phpMyAdmin แต่ถ้าตารางเสียหายมาก อาจมีบางแถวข้อมูลถูกทำลาย ดังนั้นก่อนซ่อมแซมควรสำรองข้อมูลปัจจุบันไว้

การซ่อมแซมตารางด้วย phpMyAdmin ปลอดภัยไหม?

โดยส่วนใหญ่ปลอดภัย แต่การซ่อมในฐานข้อมูลที่ใช้งานจริงยังมีความเสี่ยง ควรสำรองข้อมูล เลือกตารางให้ถูกต้อง และถ้าเป็นไปได้ตั้งเว็บเป็นโหมดบำรุงรักษา ตารางขนาดใหญ่หรือข้อมูลสำคัญควรขอคำแนะนำจากมืออาชีพ

ถ้าเป็นตาราง InnoDB ควรใช้คำสั่งซ่อมแซมหรือไม่?

ตาราง InnoDB ไม่สามารถซ่อมด้วยคำสั่ง REPAIR TABLE แบบ MyISAM ได้ การแก้ไขปัญหาควรตรวจสอบบันทึกเซิร์ฟเวอร์ ตรวจสอบดิสก์ และถ้าจำเป็นให้กู้คืนจากสำรองข้อมูล การซ่อมแซมแบบสุ่มเสี่ยงทำให้ข้อมูลเสียหายมากขึ้น

ทำไมข้อผิดพลาดนี้ถึงเกิดซ้ำบ่อย?

ถ้าปัญหายังเกิดซ้ำ แสดงว่าสาเหตุพื้นฐานยังไม่ได้รับการแก้ไข เช่น พื้นที่ดิสก์เต็ม ปิดเซิร์ฟเวอร์อย่างกะทันหัน ปริมาณเขียนข้อมูลสูง ปลั๊กอินเสียหาย หรือใช้ MyISAM ต่อเนื่อง การหาสาเหตุแท้จริงจึงสำคัญสำหรับการแก้ไขระยะยาว

ก่อนซ่อมแซมควรติดต่อโฮสติ้งไหม?

ถ้าเป็นตาราง MyISAM ที่เสียหายไม่รุนแรง คุณสามารถสำรองข้อมูลแล้วซ่อมแซมเองผ่าน phpMyAdmin ได้ แต่ถ้าตารางสำคัญ ไม่มีสำรองข้อมูล หรือฐานข้อมูลขนาดใหญ่ หรือเจอปัญหา InnoDB ควรแจ้งทีมสนับสนุนโฮสติ้งเพื่อขอคำแนะนำและช่วยเหลือ

สรุป

ข้อผิดพลาด MySQL "Table is marked as crashed" เป็นสัญญาณบ่งชี้ว่าตารางฐานข้อมูลโดยเฉพาะ MyISAM เสียหาย ซึ่งส่วนใหญ่สามารถแก้ไขได้ด้วย phpMyAdmin วิธีการที่ถูกต้องคือ สำรองข้อมูลก่อน ระบุว่าตารางใดเสียหาย ซ่อมแซมผ่าน phpMyAdmin และแก้ไขสาเหตุที่ทำให้เกิดปัญหา การสำรองข้อมูลเป็นประจำ การใช้ทรัพยากรเซิร์ฟเวอร์เพียงพอ การเปลี่ยนไปใช้ InnoDB และการอัปเดตซอฟต์แวร์จะช่วยลดโอกาสเกิดปัญหาซ้ำ หากเว็บไซต์ของคุณประสบปัญหานี้บ่อยครั้ง ควรทบทวนโครงสร้างพื้นฐานและพิจารณาโซลูชันโฮสติ้งที่เหมาะสม โดยสามารถศึกษาข้อมูลเพิ่มเติมหรือรับคำแนะนำจากทีมงาน Hostragons ได้ตาม เว็บโฮสติง Hostragons หรือ เซิร์ฟเวอร์ VPS Hostragons

แชร์บทความนี้:

ทีมงาน Hostragons

คู่มือล่าสุดจากทีมผู้เชี่ยวชาญของเราเกี่ยวกับการโฮสติ้ง เซิร์ฟเวอร์ และชื่อโดเมน มาค้นหาโซลูชันที่เหมาะสมสำหรับโครงการของคุณไปด้วยกัน

ติดต่อเรา