Joomla ขึ้น “Unable to connect to the database” ต้องแก้ตรงไหน?

ข้อความ “Unable to connect to the database” หมายความว่า Joomla ติดต่อเซิร์ฟเวอร์ฐานข้อมูลไม่ได้ โดยสาเหตุที่พบบ่อยคือฐานข้อมูลหยุดทำงาน ชื่อผู้ใช้หรือรหัสผ่านเปลี่ยน หรือค่าการเชื่อมต่อใน configuration.php ไม่ตรงกับข้อมูลบนโฮสติ้ง

ให้ตรวจตามลำดับนี้ก่อนแก้ไฟล์ เพราะการเปลี่ยนค่าโดยเดาอาจทำให้เว็บไซต์เชื่อมต่อไม่ได้หนักกว่าเดิม

❶ ตรวจว่าโฮสติ้งมีปัญหาฐานข้อมูลหรือไม่

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

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

❷ ตรวจข้อมูลเชื่อมต่อใน configuration.php

ไฟล์ configuration.php อยู่ในโฟลเดอร์หลักของ Joomla เปิดด้วย File Manager หรือ FTP แล้วตรวจค่าต่อไปนี้เทียบกับข้อมูลที่แสดงในแผงควบคุมโฮสติ้ง

  • $host — ชื่อโฮสต์ของเซิร์ฟเวอร์ฐานข้อมูล
  • $user — ชื่อผู้ใช้ฐานข้อมูล
  • $password — รหัสผ่านฐานข้อมูล
  • $db — ชื่อฐานข้อมูล
  • $dbtype — ชนิดฐานข้อมูลที่ตั้งไว้

ค่าของ $host ไม่จำเป็นต้องเป็น localhost เสมอไป ผู้ให้บริการบางรายแยกเซิร์ฟเวอร์เว็บไซต์กับฐานข้อมูล จึงต้องใช้ชื่อโฮสต์ที่โฮสติ้งกำหนด

หากจำเป็นต้องแก้ค่า ให้ดาวน์โหลดไฟล์เดิมเก็บไว้ก่อน และเปลี่ยนเฉพาะรายการที่ตรวจพบว่าไม่ตรง ระวังเครื่องหมายอัญประกาศและอัฒภาค รวมถึงอย่าเผยแพร่บรรทัด $password ให้ผู้อื่นเห็น

❸ ตรวจชื่อผู้ใช้ รหัสผ่าน และสิทธิ์เข้าฐานข้อมูล

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

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

❹ ตรวจว่าฐานข้อมูลและชื่อโฮสต์ถูกต้อง

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

ลองเลือกฐานข้อมูลจาก phpMyAdmin แล้วตรวจว่ามีตารางของเว็บไซต์ Joomla อยู่หรือไม่ หากมีหลายฐานข้อมูล ให้ตรวจว่า $db ชี้ไปยังฐานข้อมูลที่นำเข้าข้อมูลของเว็บไซต์นี้จริง

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

❺ ตรวจจากเวลาที่เริ่มเกิดปัญหา

ลองนึกย้อนว่าข้อความเริ่มปรากฏหลังเหตุการณ์ใด เพื่อให้ตรวจจุดที่เกี่ยวข้องได้เร็วขึ้น

① เกิดหลังเปลี่ยนรหัสผ่านฐานข้อมูล: เทียบค่า $password ในไฟล์กับรหัสผ่านใหม่ในโฮสติ้ง

② เกิดหลังย้ายโฮสติ้ง: ตรวจ $host, $user และ $db จากข้อมูลของเซิร์ฟเวอร์ใหม่

③ เกิดขึ้นทันทีโดยไม่ได้แก้เว็บไซต์: ตรวจสถานะ MySQL/MariaDB และสอบถามโฮสติ้งว่ามีการหยุดบริการหรือเปลี่ยนการตั้งค่าหรือไม่

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

❻ หากยังแก้ไม่ได้ ให้ส่งข้อมูลให้โฮสติ้งตรวจ

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

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

สรุป

เมื่อ Joomla ขึ้น “Unable to connect to the database” ให้ตรวจสถานะ MySQL/MariaDB ก่อน แล้วเปรียบเทียบค่า $host, $user, $password และ $db ใน configuration.php กับข้อมูลของโฮสติ้ง ตรวจสิทธิ์ของผู้ใช้และฐานข้อมูลด้วย หากเพิ่งย้ายเว็บไซต์หรือเปลี่ยนรหัสผ่าน ให้เริ่มตรวจจากการเปลี่ยนแปลงนั้น และอย่าแก้ค่าด้วยการเดา