Error Establish a Database Connection บน WordPress เกิดจากการเชื่อมต่อกับฐานข้อมูลที่ผิดพลาด ถ้าโชคดีก็เจอกันตั้งแต่เริ่มติดตั้ง WordPress เลย หรือเพิ่งทำเว็บไซต์ใหม่ๆ ยังไม่มีข้อมูลอะไร แต่ถ้าซวยหน่อยก็อาจเกิดตอนที่เว็บใช้งานไปแล้ว มีข้อมูลเยอะแล้ว ข้อมูลของเราอาจสูญหายได้ โดยเจ้า Error นี้เกิดขึ้นได้จากหลายสาเหตุเช่น

  • จากโฮสติ้งที่เราใช้บริการอยู่ – อาจเกิดจาก Database Server ล่ม
  • ข้อมูลในไฟล์ wp-config.php ไม่ถูกต้อง – Database Name/User/Password/Host Name ไม่ถูกต้อง อาจจะเพราะกรอกข้อมูลผิดหรือไม่ก็ฐานข้อมูลมีการเปลี่ยนแปลง
  • ปลั๊กอินบางตัวอาจทำให้ฐานข้อมูลเสียหาย
  • ฐานข้อมูลเสียหาย – อาจเกิดจาก Database Server ทำงานผิดพลาด Query พลาด มีปัญหาที่ Hardware ของ Server (อันนี้อาจจะต้องเผื่อใจเอาไว้เพราะมีโอกาสเสียข้อมูลได้)

หน้าตา Error ก็จะประมาณนี้

มีวิธีแก้ยังไง ?

สำหรับวิธีแก้ Error นั้นก็มีอยู่หลายวิธีตามแต่กรณีหรือความสะดวกของแต่ละคน

วิธีที่ 1 : แจ้งโฮสติ้งที่เราใช้บริการอยู่

วิธีที่ง่ายที่ซู้ดดด แค่แจ้ง Error แล้วนั่งรอให้เจ้าหน้าที่แก้ไขให้ ส่วนจะช้าหรือเร็วก็ขึ้นอยู่กับบริการของแต่ละโฮสล่ะนะ

  • ติดต่อไปหาโฮสติ้งที่เราใช้บริการอยู่
  • แจ้งว่าเกิด Error แบบนี้ขึ้น (แคปหน้าจอตอน Error ไปให้ดูเลยก็ได้)
  • รอเจ้าหน้าที่ติดต่อกลับ (ไม่น่าจะนาน)
  • หากเจ้าหน้าที่แจ้งว่า Error ที่เราเจอนั้นเกิดจากทางโฮสติ้งเอง ที่เราทำได้ก็คือรอ (ขึ้นอยู่กับว่าทางโฮสติ้งจะแก้ปัญหาได้เร็วที่สุดแค่ไหน)
  • ถ้า Error ไม่ได้เกิดที่โฮสติ้ง เจ้าหน้าที่จะแจ้งว่าเกิด Error ที่ตรงไหน (ถ้าไม่รู้ว่าต้องแก้ยังไงก็ลองถามวิธีจากเจ้าหน้าที่หรือไม่ก็ให้ทางเจ้าหน้าที่ดำเนินการให้)

✪✪✪ พอดีเว็บนี้อยู่กับ hostatom ผมเลยลองแก้ข้อมูลในไฟล์ wp-config.php ในส่วนของ Database Connection ให้มั่วดู แล้วลองแจ้งให้เจ้าหน้าที่ให้แก้ดูปรากฎว่า 15 นาทีแก้เสร็จแล้วและยังชี้จุดที่มีปัญหามาชัดเจนว่าเกิดจากอะไร — ปรบมือให้เลยจ้า


วิธีที่ 2 : เลี่ยงการใช้ปลั๊กอินบางตัว

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

อย่างเช่นปลั๊กอินเหล่านี้ เป็นตัวที่พบว่ามีอาการดังกล่าว แนะนำให้หลีกเลี่ยงไม่ให้ใช้งานจะดีกว่า

จะเห็นว่า plugin บางตัวออกแบบการเก็บข้อมูลลงตารางได้ไม่ดี

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


วิธีที่ 3 : แก้ข้อมูลในไฟล์ wp-config.php ให้ถูกต้อง

ก่อนที่จะเริ่ม เราต้องมีข้อมูล Database Name, Database User และ Database Password กันซะก่อน ถ้าไม่รู้ ให้เราเปิดไฟล์ wp-config.php ดูว่า WordPress ตัวที่มีปัญหาของเราเนี่ยมันเชื่อมอยู่กับฐานข้อมูลชื่ออะไร จากนั้นไปเปลี่ยนรหัสผ่านด้วย Control Panel ที่เราใช้กับโฮสติ้งได้เลย
>> เปลี่ยนรหัสผ่านฐานข้อมูลด้วย DirectAdmin
>> เปลี่ยนรหัสผ่านฐานข้อมูลด้วย Plesk
เมื่อได้ข้อมูลมาครบแล้วก็มาเริ่มกันได้เลย

  • เปิดไฟล์ wp-config.php ขึ้นมา (ใช้ FTP หรือ Control Panel ก็ได้)
  • แก้ข้อมูลตามที่มาร์คไว้ให้ตรงกับฐานข้อมูลของเรา (เสร็จแล้วก็อย่าลืมกดเซฟกันล่ะ)
  1. ‘database_name_here’ ให้แก้เป็น ‘ชื่อฐานข้อมูลของเรา’
  2. ‘username_here’ ให้แก้เป็น ‘ชื่อผู้ใช้ฐานข้อมูล’
  3. ‘password_here’ ให้แก้เป็น ‘รหัสผ่านที่เราตั้งไว้’
  4. ‘localhost’ ให้แก้เป็น ‘ชื่อโฮสของฐานข้อมูล’ (ส่วนใหญ่จะเป็น localhost น่ะแหละ)
  • ลองเช็คเว็บไซต์ดูสิว่า Error หายไปมั้ย

วิธีที่ 4 : ซ่อมฐานข้อมูล

สาเหตุนี้บางครั้งก็เกิดจาก WordPress Update ไม่สมบูรณ์ หยุดชะงักไปกลางคัน หรือ WordPress กำลัง Query Database แบบ Insert ข้อมูลเข้าตารางผ่านการใช้งาน Plugin หรือ Post บทความแล้วดันหยุดชะงักไปดื้อๆ อาการแบบนี้จะทำให้ Database พัง (แบบเบาๆ) อย่าเพิ่งตกใจไป เราสามารถซ่อมฐานข้อมูลได้แบบอัตโนมัติ วิธีที่ง่ายที่สุดแนะนำให้ทำผ่าน Control Panel
>> สำหรับ DirectAdmin
>> สำหรับ Plesk
ถ้าไม่มี Control Panel ก็สามารถซ่อมผ่าน WordPress ได้เช่นกัน

  • เปิดไฟล์ wp-config.php ขึ้นมา
  • เพิ่มโค้ด “define( ‘WP_ALLOW_REPAIR’, true );” เข้าไป (เพิ่มไว้ที่บรรทัดล่างสุดเลยก็ได้) จากนั้นกดเซฟซักที
  • เปิดเบราว์เซอร์ขึ้นมา แล้วไปที่ “ชื่อโดเมน/wp-admin/maint/repair.php” จะมาที่หน้าซ่อมฐานข้อมูลของเรา ให้จิ้มไปที่ “Repair Database” โลด
  • เสร็จแล้วจะได้แบบนี้
  • กลับไปที่ไฟล์ “wp-config.php” ให้เราลบโค้ด “define( ‘WP_ALLOW_REPAIR’, true );” ทิ้งไปโลด แล้วก็เซฟซักที
  • ลองเช็คเว็บไซต์ดูสิว่า Error หายไปมั้ย


หวังว่าบทความนี้จะช่วยให้แก้ Error กันได้นะจ้ะ