ההודעה Error establishing a database connection אומרת דבר אחד פשוט: וורדפרס לא מצליח להתחבר למסד הנתונים, ולכן הוא לא יכול להציג אף עמוד. כל התוכן שלך, הפוסטים, העמודים וההגדרות, יושב במסד הנתונים, וכשאין חיבור אין אתר. זו הודעה מפורשת, ולא מסך לבן בלי שום טקסט. אם אתה רואה מסך ריק לגמרי, הבעיה אחרת.
לפי התיעוד של וורדפרס, הסיבה הנפוצה ביותר היא טעות בפרטי החיבור שבקובץ wp-config.php. אחריה באות בעיות אצל חברת האחסון, כמו שרת מסד נתונים שנפל או מסד שהגיע למכסה, ולפעמים טבלאות פגומות או פריצה. סידרתי כאן את הבדיקות לפי הסדר שבו כדאי לעשות אותן, ולכל אחת איך יודעים שזו הבעיה ואיך מתקנים.
שגיאת חיבור למסד נתונים וורדפרס נראית מפחידה, אבל ברוב המקרים המידע עצמו לא נמחק. הוא פשוט לא נגיש כרגע.
ארבע הסיבות לשגיאה במבט אחד
הטבלה מראה איך מזהים כל סיבה ומה עושים בה, ובהמשך כל אחת מפורטת.
| סיבה | איך מזהים | מה עושים |
|---|---|---|
| פרטי חיבור שגויים ב-wp-config.php | מיד אחרי מעבר אחסון, העברת אתר, שינוי סיסמה של משתמש מסד הנתונים או עריכה של wp-config.php | משווים אותם תו אחר תו לערכים ב-wp-config.php |
| שרת מסד הנתונים למטה או שהגיע למכסה | לא שינית כלום באתר, והשגיאה הופיעה פתאום | לפנות לתמיכה של חברת האחסון ולשאול ישירות אם שרת מסד הנתונים תקין, והאם המסד שלך הגיע למכסה |
| טבלאות פגומות | בדיקת החיבור הצליחה, אבל האתר עדיין לא עולה, או שחלק מהעמודים עולים וחלק לא | לוורדפרס יש כלי תיקון מובנה בדיוק למקרה הזה |
| פריצה | קבצים שאתה לא מכיר בתיקייה הראשית, שינויים ב-wp-config.php שלא אתה עשית, או התראה מהסורק | שומרים עותק של המצב הנוכחי, מחליפים את כל הסיסמאות (מסד נתונים, FTP, לוח בקרה ומשתמשי וורדפרס), ופונים לחברת האחסון או למי שמתמחה בניקוי אתרים |
לפני הכול: גיבוי מלא
כמעט כל התיקונים כאן כוללים עריכה של wp-config.php או עבודה ישירה על מסד הנתונים. לכן לפני כל צעד כדאי לדאוג לשלושה דברים:
- עותק של wp-config.php במחשב שלך, כדי שתוכל להחזיר אותו בדיוק כמו שהיה.
- גיבוי של כל תיקיית האתר, דרך מנהל הקבצים של האחסון או ב-FTP.
- לברר אילו גיבויים של מסד הנתונים יש לחברת האחסון. אם אתה לא מצליח להגיע למסד בעצמך, זה הגיבוי שיציל אותך אם משהו ישתבש.
סיבה 1: פרטי חיבור שגויים, הגורם הנפוץ ל-Error Establishing a Database Connection
מתחילים כאן, כי לפי התיעוד של וורדפרס זו הסיבה הנפוצה ביותר לשגיאה. הקובץ wp-config.php נמצא בתיקייה הראשית של האתר, ויש בו ארבע שורות שקובעות לאן וורדפרס מתחבר:
define( 'DB_NAME', 'database_name_here' );
define( 'DB_USER', 'username_here' );
define( 'DB_PASSWORD', 'password_here' );
define( 'DB_HOST', 'localhost' );אם השגיאה הופיעה מיד אחרי מעבר אחסון, העברת אתר, שינוי סיסמה של משתמש מסד הנתונים או עריכה של wp-config.php, כמעט בוודאות אחד מארבעת הערכים האלה לא תואם.
כך בודקים ומתקנים:
- נכנסים ללוח הבקרה של האחסון, לאזור מסדי הנתונים, ובודקים את שם המסד, את שם המשתמש, ושהמשתמש משויך למסד הזה.
- משווים אותם תו אחר תו לערכים ב-wp-config.php. טעויות נפוצות הן קידומות שחסרות, אותיות גדולות במקום קטנות ורווחים מיותרים בתוך הגרשיים.
- אם אתה לא בטוח בסיסמה, התיעוד של וורדפרס מציע לאפס את סיסמת משתמש מסד הנתונים ידנית. מאפסים אותה בלוח הבקרה של האחסון ומעדכנים את הערך החדש ב-
DB_PASSWORD. - לגבי
DB_HOST: ברוב המקרים הערך הואlocalhostואין צורך לשנות אותו. יש חברות אחסון שבהן מסד הנתונים יושב על שרת נפרד או על פורט אחר, ואז הכתובת נראית למשל כך:mysql.example.com:3307. את הערך הנכון לוקחים מחברת האחסון, ולא מנחשים.
את הקובץ עורכים בעורך טקסט פשוט או בעורך של מנהל הקבצים, ושומרים אותו באותו מקום. אחרי השמירה מרעננים את האתר. אם הוא עלה, סיימת. אם לא, ממשיכים לבדיקה הבאה.
בדיקה ישירה: האם אפשר להתחבר למסד בכלל
אם הפרטים נראים נכונים והשגיאה נשארה, כדאי לבדוק את החיבור בלי וורדפרס באמצע. כך תדע אם הבעיה בפרטים או בשרת עצמו.
בשביל זה יוצרים בתיקייה הראשית של האתר קובץ בשם db-test.php עם התוכן הבא, ומחליפים את ארבעת הערכים בערכים מ-wp-config.php:
<?php
mysqli_report( MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT );
try {
$link = mysqli_connect( 'localhost', 'db_user', 'db_password', 'db_name' );
echo 'Connected: ' . mysqli_get_host_info( $link );
} catch ( mysqli_sql_exception $e ) {
echo 'Connection failed: ' . $e->getMessage();
}עכשיו פותחים בדפדפן את הכתובת /db-test.php באתר שלך:
- אם מופיע Connected, פרטי החיבור תקינים והשרת זמין. הבעיה כנראה בטבלאות (סיבה 3) או בקבצים של וורדפרס.
- אם מופיע Connection failed, ההודעה שאחריה מגיעה ישירות משרת מסד הנתונים. הודעה על גישה שנדחתה מצביעה על שם משתמש או סיסמה. הודעה שהשרת לא נמצא או לא עונה מצביעה על
DB_HOSTאו על שרת שנפל.
הקובץ מכיל את הסיסמה של מסד הנתונים, ולכן מוחקים אותו מיד כשמסיימים לבדוק.
סיבה 2: שרת מסד הנתונים למטה או שהגיע למכסה
התיעוד של וורדפרס מזכיר שתי בעיות אצל חברת האחסון שגורמות לשגיאה הזו: מסד הנתונים הגיע למכסה ונחסם, או ששרת מסד הנתונים למטה. זה לא אותו דבר כמו ההודעה על חריגה ממגבלת הזיכרון (memory limit exceeded), שם הבעיה היא מגבלת זיכרון ב-PHP ולא החיבור למסד הנתונים.
כמה סימנים שמצביעים על הסיבה הזו:
- לא שינית כלום באתר, והשגיאה הופיעה פתאום.
- בדיקת החיבור מהסעיף הקודם נכשלת גם עם פרטים נכונים.
- גם phpMyAdmin בלוח הבקרה של האחסון לא נפתח או לא מציג את המסד.
- השגיאה מופיעה לסירוגין, למשל בשעות עומס.
את זה לא מתקנים מתוך וורדפרס. צריך לפנות לתמיכה של חברת האחסון ולשאול ישירות אם שרת מסד הנתונים תקין, והאם המסד שלך הגיע למכסה. כדאי לבקש מהם גם את לוג השגיאות של השרת מהשעה שבה התחילה התקלה. ואם יש לך גישה ל-Error Log בלוח הבקרה, שווה להציץ בו בעצמך קודם.
כדי שהפנייה תיפתר מהר, כדאי לתת להם מראש את כל מה שכבר בדקת: שם הדומיין, השעה שבה השגיאה התחילה, העובדה שפרטי החיבור ב-wp-config.php תואמים למה שמופיע בלוח הבקרה, ואת ההודעה המדויקת שקיבלת מקובץ הבדיקה. כך הם לא יתחילו מאפס ולא ישלחו אותך לבדוק שוב דברים שכבר סגרת.
סיבה 3: טבלאות פגומות במסד הנתונים
לפעמים החיבור עצמו עובד, אבל טבלה אחת או יותר במסד פגומה. לוורדפרס יש כלי תיקון מובנה בדיוק למקרה הזה.
הסימן הוא שבדיקת החיבור הצליחה, אבל האתר עדיין לא עולה, או שחלק מהעמודים עולים וחלק לא.
כך מריצים את כלי התיקון:
- מוודאים שיש גיבוי של מסד הנתונים.
- מוסיפים ל-wp-config.php, מעל השורה
require_onceשבסוף הקובץ, את השורה:define( 'WP_ALLOW_REPAIR', true ); - פותחים בדפדפן את הכתובת
/wp-admin/maint/repair.phpבאתר שלך. בדף יופיעו שני כפתורים: Repair Database ו-Repair and Optimize Database. כדאי להתחיל בראשון. האפשרות השנייה מבצעת גם אופטימיזציה, ולפי הטקסט בדף עצמו היא יכולה לקחת זמן רב, ומסד הנתונים נעול כל עוד היא רצה. - בסיום תקבל רשימה של הטבלאות, וליד כל טבלה כתוב אם היא תקינה, אם תוקנה בהצלחה או אם התיקון נכשל. אם חלק מהבעיות לא תוקנו, כדאי לשמור את רשימת השגיאות, כי זה מה שמומחה או התמיכה של האחסון יצטרכו.
- מיד כשמסיימים, מוחקים את השורה מ-wp-config.php.
השלב האחרון חשוב: לפי התיעוד של וורדפרס, כשההגדרה הזו פעילה, גם משתמש שלא מחובר יכול לגשת לדף התיקון. לכן היא צריכה להיות פעילה רק כשצריך, ולהתבטל מיד כשהבעיה נפתרה. את כל ההגדרות האלה אפשר לראות בתיעוד הרשמי של wp-config.php.
סיבה 4: האתר נפרץ
אם פרטי החיבור נכונים, חברת האחסון מאשרת שהשרת תקין והשגיאה עדיין שם, התיעוד של וורדפרס ממליץ לבדוק אם האתר נפרץ, למשל עם סורק חיצוני כמו Sucuri SiteCheck.
סימנים לפריצה הם קבצים שאתה לא מכיר בתיקייה הראשית, שינויים ב-wp-config.php שלא אתה עשית, או התראה מהסורק.
פריצה היא לא מקום לתיקונים חלקיים, ולא כדאי למחוק קבצים באקראי. שומרים עותק של המצב הנוכחי, מחליפים את כל הסיסמאות (מסד נתונים, FTP, לוח בקרה ומשתמשי וורדפרס), ופונים לחברת האחסון או למי שמתמחה בניקוי אתרים.
מתי לא נוגעים במסד הנתונים לבד
- אין לך גיבוי של מסד הנתונים, ואתה עומד להריץ עליו תיקון.
- בדיקת החיבור מחזירה שגיאה שאתה לא מבין.
- יש סימנים לפריצה.
- האתר הוא חנות או מקור לידים, וכל שעה שהוא למטה עולה לך כסף.
אם אחרי התיקון אתה רואה ירידה בנראות בגוגל, כדאי לקרוא את למה האתר שלי לא מופיע בגוגל.
שאלות נפוצות
מה גורם ל-Error Establishing a Database Connection?
וורדפרס לא מצליח להתחבר למסד הנתונים. הסיבה הנפוצה היא פרטי חיבור שגויים ב-wp-config.php. סיבות נוספות הן שרת מסד נתונים שנפל, מסד שהגיע למכסה אצל חברת האחסון, טבלאות פגומות, ובמקרים מסוימים פריצה. אם השגיאה הופיעה דווקא אחרי עדכון גרסת PHP, בדוק גם את WordPress critical error after PHP update, ששם הבעיה בקוד שלא תואם לגרסה החדשה ולא בחיבור למסד.
האם התוכן שלי נמחק?
השגיאה עצמה אומרת רק שאין חיבור, לא שהמידע נמחק. ברוב המקרים, ברגע שהחיבור חוזר, האתר חוזר כמו שהיה. אם יש חשד לפריצה או לנזק במסד, הגיבוי של חברת האחסון הוא רשת הביטחון.
איך השגיאה משפיעה על גוגל?
לפי קוד המקור של וורדפרס, כשהחיבור נכשל וורדפרס מחזיר קוד HTTP 500, כדי שמנועי חיפוש לא ישמרו את הודעת השגיאה. לפי התיעוד של גוגל, שגיאות שרת גורמות לסורקים שלה להאט, ו-URL שממשיך להחזיר שגיאת שרת לאורך זמן מוסר מהאינדקס. לכן כדאי לתקן מהר.
האם בטוח להשאיר את WP_ALLOW_REPAIR פעיל?
לא. כשההגדרה פעילה, כל אחד יכול לגשת לדף התיקון בלי להתחבר. הפעל אותה רק לזמן התיקון ומחק אותה מיד אחרי.
איפה נמצא הקובץ wp-config.php?
בתיקייה הראשית של התקנת וורדפרס, באותה תיקייה שבה נמצאות התיקיות wp-admin, wp-content ו-wp-includes. מגיעים אליו דרך FTP או דרך מנהל הקבצים בלוח הבקרה של האחסון. לפני שאתה עורך אותו, הורד עותק למחשב.
מה לבדוק אחרי שהאתר חזר לעבוד?
עבור על כמה עמודים מרכזיים ועל לוח הבקרה, ודא שהתוכן האחרון שפרסמת נמצא במקום. אחר כך סגור את כל מה שפתחת בדרך: מחק את db-test.php אם יצרת אותו, הסר את WP_ALLOW_REPAIR מ-wp-config.php אם הוספת, ואם היה חשד לפריצה, ודא שכל הסיסמאות הוחלפו.
השגיאה מופיעה רק לפעמים. מה זה אומר?
שגיאה שמופיעה ונעלמת מצביעה בדרך כלל על בעיה בצד השרת ולא על פרטי חיבור, כי פרטים שגויים היו נכשלים כל פעם. פנה לחברת האחסון עם השעות שבהן זה קרה ובקש לבדוק את שרת מסד הנתונים.
ניסית את הבדיקות והשגיאה עדיין מופיעה? אני מטפל בתקלות כאלה באתרי וורדפרס, כולל גיבוי לפני כל נגיעה במסד. אפשר לפנות אליי כאן.
