การแก้ไขปัญหา MySQL shutdown unexpectedly ใน XAMPP

บ่อยครั้งที่นักพัฒนาเว็บไซต์ซึ่งทำงานอยู่บน localhost และจำลองเครื่องแม่ข่ายด้วย XAMPP มักจะเจอเหตุการณ์ MySQL ฟ้อง error แจ้งปัญหาการทำงานผิดพลาดดังเช่นในภาพ

ปัญหา MySQL shutdown unexpectedly ใน XAMPP นั้นเกิดขึ้นได้บ่อยและมีสาเหตุหลายประการ สรุปสาเหตุหลัก ๆ มาจาก

  • Port ถูกใช้งานอยู่แล้ว: MySQL ใช้ port 3306 เป็นค่าเริ่มต้น หากมีโปรแกรมอื่นใช้ port นี้อยู่ MySQL จะไม่สามารถเริ่มทำงานได้
  • ไฟล์ข้อมูลเสียหาย: ไฟล์ในโฟลเดอร์ data ของ MySQL อาจเสียหายจากการปิดเครื่องไม่ถูกต้อง หรือปัญหาอื่น ๆ
  • การตั้งค่าไม่ถูกต้อง: ไฟล์ my.ini ซึ่งเป็นไฟล์ตั้งค่าของ MySQL อาจมีการตั้งค่าที่ไม่ถูกต้อง
  • สิทธิ์การเข้าถึงไม่ถูกต้อง: ผู้ใช้งานที่รัน XAMPP อาจไม่มีสิทธิ์ในการเข้าถึงไฟล์หรือโฟลเดอร์ที่จำเป็น

วิธีแก้ไขปัญหาตามสาเหตุที่ว่าไว้คือ

     1. ตรวจสอบ Port:

  • ระบบปฏิบัติการ Windows: เปิด Command Prompt และพิมพ์ netstat -ano | findstr :3306 เพื่อดูว่ามีโปรแกรมใดใช้ port 3306 อยู่ หากมี ให้ปิดโปรแกรมนั้นหรือเปลี่ยน port ที่ MySQL ใช้ในไฟล์ my.ini
  • ระบบปฏิบัติการ macOS/Linux: เปิด Terminal และพิมพ์ sudo lsof -i :3306 เพื่อดูว่ามีโปรแกรมใดใช้ port 3306 อยู่ หากมี ให้ปิดโปรแกรมนั้นหรือเปลี่ยน port ที่ MySQL ใช้ในไฟล์ my.ini

     2. ซ่อมแซมไฟล์ข้อมูล:

     1. เปลี่ยนชื่อโฟลเดอร์ mysql/data เป็น mysql/data_old

     - ขั้นตอนนี้เป็นการสำรองข้อมูลเดิมไว้ โดยเปลี่ยนชื่อโฟลเดอร์ที่มีปัญหาเพื่อให้สามารถสร้างโฟลเดอร์ใหม่ได้

     2. ทำสำเนาของโฟลเดอร์ mysql/backup และตั้งชื่อเป็น mysql/data

     - XAMPP จะมีโฟลเดอร์สำรองที่มีโครงสร้างฐานข้อมูลพื้นฐาน เราจะใช้โฟลเดอร์นี้เป็นจุดเริ่มต้นใหม่

     3. คัดลอกโฟลเดอร์ฐานข้อมูลทั้งหมดของคุณจาก mysql/data_old ไปยัง mysql/data

     - ย้ายข้อมูลฐานข้อมูลทั้งหมดที่เคยมีกลับเข้าไปในโฟลเดอร์ใหม่ ยกเว้นโฟลเดอร์ระบบ (mysql, performance_schema, phpmyadmin) เพราะเราต้องการใช้เวอร์ชันใหม่ของโฟลเดอร์เหล่านี้

     4. คัดลอกไฟล์ mysql/data_old/ibdata1 ไปยังโฟลเดอร์ mysql/data

     - ไฟล์ ibdata1 เป็นไฟล์สำคัญที่เก็บข้อมูล InnoDB ซึ่งเป็นระบบจัดการฐานข้อมูลหลักของ MySQL การคัดลอกไฟล์นี้ช่วยรักษาความสมบูรณ์ของข้อมูลของคุณ

     5. เริ่มการทำงานของ MySQL ใหม่จากแผงควบคุม XAMPP

     - หลังจากทำตามขั้นตอนข้างต้นแล้ว ให้เปิด XAMPP Control Panel และลองเริ่มการทำงานของ MySQL อีกครั้ง

     3. ตรวจสอบและแก้ไขไฟล์ my.ini:

  • ตรวจสอบว่าการตั้งค่าต่าง ๆ เช่น port, datadir, innodb_log_file_size ถูกต้อง

     4. ตรวจสอบสิทธิ์การเข้าถึง:

  • ตรวจสอบว่าผู้ใช้ที่รัน XAMPP มีสิทธิ์ในการอ่านและเขียนไฟล์และโฟลเดอร์ในไดเร็กทอรี XAMPP

จากประสบการณ์ที่ผ่าน ๆ มา พบว่าวิธีที่ 2 มักจะสามารถช่วยแก้ไขปัญหานี้ได้ดีที่สุดครับ ยังไงก็ลองนำไปปรับใช้กันดูได้ อย่างไรก็ตาม ทั้งหมดที่กล่าวมานี้เป็นเพียงวิธีแก้ปัญหาเฉพาะหน้า หรือวิธีแก้ไขในกรณีฉุกเฉินเท่านั้น ไม่ใช่วิธีแก้ปัญหาอย่างถาวร หลังจากที่เราสามารถกู้คืนข้อมูลกลับมาได้แล้ว แนะนำให้สำรองข้อมูลออกมาแล้วติดตั้ง XAMPP ใหม่ เพราะการติดตั้งใหม่จะช่วยแก้ปัญหาที่อาจเกิดจากไฟล์ระบบที่เสียหายหรือการตั้งค่าที่ผิดพลาดใน XAMPP ได้ดีที่สุดนั่นเองครับ

ขอบคุณแหล่งความรู้จาก Stack Overflow https://stackoverflow.com/questions/18022809/how-can-i-solve-error-mysql-shutdown-unexpectedly/61859561#61859561

Rating

No votes yet