การแก้ไขปัญหา 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
- Log in to post comments
- 533 views