
شاید فکر کنید وبسایتهای بزرگ و معتبر همیشه بدون مشکل کار میکنند. من هم همین تصور را داشتم، تا روزی که برای استعلام و فعال کردن گارانتی باتری ماشین به وبسایت رسمی یک شرکت شناختهشده تولید باتری مراجعه کردم. انتظار داشتم فرم استعلام گارانتی و اطلاعات محصول بلافاصله در دسترس باشد، ولی متاسفانه بهجای همه این امکانات، تنها یک پیام کوتاه روی صفحه سفید در مرورگر نمایش داده شد که با متن زیر بود:
خطا در برقراری ارتباط با پایگاه داده
در همان لحظه فهمیدم چنین خطایی چقدر میتواند دردسر ساز باشد و نهتنها باعث توقف فرایندهای مهمی مثل ثبت یا فعالسازی گارانتی میشود، بلکه اعتبار شرکت را هم زیر سؤال میبرد. همین تجربه باعث شد تصمیم بگیرم دقیقتر بررسی کنم این مشکل چرا پیش میآید و چطور میتوان آن را رفع کرد.
در این مقاله بهزبان ساده توضیح میدهیم که این خطا چیست، دلایل رخ دادن آن چیست است و چه اقداماتی باید انجام دهیم تا هم مشکل برطرف شود و هم از تکرار آن جلوگیری کنیم.
در این مقاله چی قراره یاد بگیریم؟
خطا در برقراری ارتباط با پایگاه داده در وردپرس
این خطا زمانی اتفاق میافتد که وردپرس امکان اتصال به پایگاهداده را از دست میدهد. در این شرایط، معمولاً کل وبسایت از دسترس خارج میشود. وردپرس اطلاعات اصلی سایت مانند نوشتهها، کاربران، تنظیمات و افزونههای فعال را در پایگاهداده MySQL ذخیره میکند. در وردپرس تنها فایلهای سایت و محتوای رسانهها بهطور مستقیم داخل پایگاهداده قرار ندارند؛ هرچند مسیر و جزئیات آنها در دیتابیس ثبت میشود.

وردپرس با استفاده از زبان PHP اجرا میشود. وقتی بازدیدکنندهای به سایت مراجعه میکند، با PHP کدهای سایت را پردازش میکند و سپس اطلاعات مرتبط با صفحه موردنظر را از پایگاهداده دریافت میکند. اگر به هر دلیلی اتصال بین فایلهای PHP و MySQL برقرار نشود، پیام خطای «خطا در برقراری ارتباط با پایگاه داده در وردپرس» نشان داده میشود. در این وضعیت معمولاً صفحه سفید دیده میشود و ممکن است دسترسی به پنل مدیریت وردپرس هم امکان پذیر نباشد. البته گاهی این مشکل فقط در برخی بازدیدها ظاهر میشود و دائمی نیست.
در ادامه دلایل اصلی و فرعی که باعث رخ دادن این مشکل در سایتهای وردپرس میشود را بررسی میکنیم و راهحلهای موردنیاز را نیز توضیح میدهیم.
1- صحیح نبودن اطلاعات اتصال به پایگاهداده
یکی از رایجترین دلایل عدم اتصال وردپرس به پایگاهداده، صحیح نبودن اطلاعات اتصال است. وردپرس جهت اتصال به پایگاهداده هاست به اطلاعات زیر نیاز دارد:
- نام پایگاهداده
- نام کاربر پایگاهداده
- پسورد کاربر پایگاهداده
- هاست پایگاهداده
در صورتیکه حتی یکی از این اطلاعات اشتباه تنظیم شده باشد، باعث رخ دادن “خطا در برقراری ارتباط با پایگاهداده” در سایت وردپرسی میشود. بنابراین در مرحله اول نیاز است بررسی کنیم که اطلاعات اتصال صحیح باشند.
در وردپرس، اطلاعات اتصال به پایگاهداده در فایل wp-config.php نگهداری میشوند.
نکته مهم: قبل از اعمال هرگونه تغییر حتما بکاپ تهیه کنید.
به همین دلیل نیاز هست که همانند تصویر زیر وارد کنترل پنل هاست شده و در فایل منیجر به محل نصب وردپرس برویم و فایل wp-config.php را پیدا کرده و آن را برای ویرایش باز کنیم.

سپس با قطعه کدی مشابه زیر مواجه خواهیم شد:
// ** Database settings - You can get this info from your web host ** //
/** The name of the database for WordPress */
define( 'DB_NAME', 'database_name' );
/** Database username */
define( 'DB_USER', 'database_username' );
/** Database password */
define( 'DB_PASSWORD', 'database_user_password' );
/** Database hostname */
define( 'DB_HOST', 'localhost' );
در صورتیکه قطعه کد بالا در فایل wp-config.php وجود نداشت، به این معنا هست که به طور کلی ارتباط با پایگاهداده قطع شده که نیاز است قطعه کد بالا را به این فایل اضافه کنیم. در صورتی هم که وجود داشت، نیاز است که صحت اطلاعات موجود در آن را بررسی کنیم.
در ادامه با هریک از بخشهای این قطعه کد آشنا خواهم شد:
- نام پایگاهداده (DB_NAME): در اینجا باید نام پایگاهداده سایت را قرار دهیم.
- نام کاربر پایگاهداده (DB_USER): در روبروی این باید فیلد نام کاربر متصل به پایگاهدادهای که آن را در DB_NAME مشخص کردیم را قرار دهیم.
- پسورد کاربر پایگاهداده (DB_PASSWORD): در این فیلد پسورد کاربر متصل به پایگاهدادهای که در DB_NAME مشخص کردیم را قرار میدهیم.
- هاست پایگاهداده (DB_HOST): نیاز است که در روبروی آن آدرس هاستی که پایگاهداده سایت روی آن قرار دارد را وارد کنیم. در صورتیکه پایگاهداده روی همان هاستی است که وردپرس هم نصب شده، میبایست مقدار localhost را وارد کنیم. (در اینجا کلمه localhost با هاستهای مجازی مثل ومپ و زمپ که روی کامپیوتر خود نصب میکنیم متفاوت است و به آنها ارتباطی ندارد). در صورتیهم که پایگاهداده روی هاست دیگری قرار دارد، نیاز است که آدرس یا آیپی آن را در این فیلد وارد کنیم.
- اکثر شرکتهای میزبانی، پایگاهداده را روی همان هاست اصلی ارائه میکنند، اما در برخی از شرکتها پایگاهداده روی سرور متفاوتی میزبانی میشود و نیاز است که از طریق ارتباط با پشتیبان هاست، آدرس یا آیپی آن را دریافت کرده و به عنوان DB_HOST تنظیم کنیم.
اطلاعات پایگاهداده را از کجا بیاریم؟
برای پیدا کردن نام پایگاه داده در هاست سی پنل کافیست همانند تصویر زیر وارد بخش “Manage My Database” شویم.

و برای پیدا کردن نام پایگاه داده در کنترل پنل دایرکت ادمین همانند تصویر زیر وارد بخش “Databases” میشویم.

در نهایت پس از اطلاع از نام پایگاه داده و مشخصات آن، محتویات فایل wp-config.php باید مشابه زیر تنظیم شده باشد.

تست صحیح بودن اطلاعات پایگاه داده
اگر اطلاعات اتصال به پایگاهداده را مجددا تنظیم کردیم و باز هم خطا در وردپرس برطرف نشد، از طریق روش دیگری هم میتوانیم صحیح بودن اطلاعات اتصال را تست کنیم. برای این منظور کافی هست در ریشه هاست یک فایل با نام testdb.php ایجاد کنیم و کد زیر را در آن قرار دهیم:
<?php
$host = 'localhost'; // نام هاست پایگاهداده
$user = 'db_username'; // نام کاربر پایگاهداده
$pass = 'db_password'; // رمز عبور کاربر پایگاهداده
$db = 'db_name'; // نام پایگاه داده
$conn = new mysqli($host, $user, $pass, $db);
if ($conn->connect_error) {
die("اتصال برقرار نشد: " . $conn->connect_error);
} else {
echo "اتصال موفقیتآمیز بود!";
}
پس از قراردادن فایل در هاست و قرار دادن اطلاعات اتصال در آن، آدرس فایل را به صورت your-domain.com/testdb.php وارد کرده و نتیجه را بررسی میکنیم.
در صورتیکه پیام “اتصال موفقیتآمیز بود” را مشاهده کردیم، ولی سایت وردپرسی همچنان دچار خطا است، به این معنی است که اطلاعات اتصال صحیح است و نیاز است که برای حل مشکل به سراغ دلایل و راهحلهای بعدی برویم. در غیر این صورت و مشاهده پیام “اتصال برقرار نشد”، یعنی همچنان اطلاعات وارد شده برای پایگاه داده درست نیست.
2-خراب شدن پایگاهداده وردپرس و نحوه تعمیر آن
طبق تجربه با گذشت زمان و افزایش حجم دادهها، پایگاهداده وردپرس در معرض خرابی یا اختلال قرار میگیرد. این مسئله معمولاً زمانی شدت پیدا میکند که تعداد زیادی قالب و افزونه نصب و سپس غیرفعال یا حذف شوند. بسیاری از این افزونهها و قالبها جداول و دادههای خاص خود را به پایگاهداده اضافه میکنند. نکته قابل توجه این است که پس از غیرفعالسازی یا حذف آنها، بخش زیادی از این اطلاعات در پایگاهداده باقی میماند. انباشته شدن این دادههای بلااستفاده در طولانیمدت میتواند ساختار پایگاهداده را بههم بریزد، موجب کاهش سرعت سایت شود و حتی احتمال بروز خطاهایی مانند عدم برقراری ارتباط با پایگاهداده را افزایش دهد.
همچنین وقتی که پایگاهداده وردپرس آسیب میبیند، ما از سمت کاربر در سایت همچنان خطای “خطا در برقراری ارتباط با پایگاهداده” را مشاهده میکنیم، در حالی که اگر به سمت ادمین برویم با خطای زیر مواجه میشویم:
One or more database tables are unavailable. The database may need to be repaired.
که این پیام به این معنی است که یک یا چند جدول پایگاه داده در دسترس نیست و ممکن است پایگاه داده نیاز به تعمیر داشته باشد. در این شرایط نیاز است که فوری اقدام به تعمیر پایگاهداده وردپرس کنیم. به منظور تعمیر پایگاهداده 3 روش وجود دارد:
تعمیر پایگاهداده از طریق ادمین وردپرس
برای این کار نیاز است که فایل wp-config.php را برای ویرایش باز کرده و به انتهای آن، کد زیر را اضافه کنیم:
define( 'WP_ALLOW_REPAIR', true );
پس از این که کد بالا را فایل اضافه کردیم، نیاز است در مرورگر آدرس زیر را وارد کنیم:
http://your-domain.com/wp-admin/maint/repair.php
بعد از آن با صفحه زیر مواجه میشویم.

پس از مشاهده صفحه بالا، کافی هست روی دکمه “تعمیر پایگاهداده” کلیک کرده و منتظر بمانیم تا پایگاهداده وردپرس تعمیر شود.
سپس وضعیت سلامت جداول سایت را همانند تصویر زیر مشاهده خواهیم کرد. بعد از آن نیاز است که به فایل wp-config.php بازگشته و کد مربوط به تعمیر پایگاهداده را حذف کنیم.

تعمیر پایگاهداده از طریق کنترلپنل هاست
همچنین ما میتوانیم تعمیر پایگاهداده را از طریق کنترل پنل هاست هم انجام دهیم. به عنوان مثال در کنترل CPanel اگر همانند تصویر زیر به بخش Manage My Databases برویم، میتوانیم پایگاهداده موردنظر را انتخاب کرده و مقابل آن روی دکمه Repair Database کلیک کنیم.

برای تعمیر پایگاه داده در کنترل دایرکت ادمین هم کافیست وارد بخش “Databases” شویم و روی نام پایگاه داده موردنظر کلیک کنیم. پس از ورود به پایگاه داده موردنظر، برای تعمیر پایگاه داده همانند تصویر زیر روی گزینه “Repair” کلیک میکنیم.

برای اطلاع از چگونگی تعمیر پایگاه داده در سایر کنترلها کافیست در اینترنت این موضوع را جستجو کرده و روش آن را یاد بگیرید.
تعمیر پایگاهداده از طریق phpmyadmin
کافی است در کنترلپنل هاست به phpmyadmin برویم و پایگاهداده را باز کنیم. سپس در انتها روی Check All کلیک کنیم تا همه جدول تیک زده شوند و در فیلد انتخابی کنار آن، مقدار Repair Table را انتخاب کنیم.

3- عدم امکان اتصال به پایگاهداده به دلیل خرابی فایلهای وردپرس
در برخی شرایط، بروز خطای عدم اتصال وردپرس به پایگاهداده صرفاً به اشتباه در اطلاعات دسترسی محدود نمیشود، بلکه ممکن است ریشه این مشکل در خرابی یا ناقص بودن فایلهای اصلی وردپرس باشد. چنین وضعیتی معمولاً زمانی پیش میآید که فرآیند بروزرسانی هسته وردپرس بهطور کامل انجام نشده یا وقفهای در هنگام انتقال فایلها رخ داده باشد. علاوه بر این، اگر سایت با بدافزار آلوده شود یا مورد حمله هکری قرار گیرد، احتمال تغییر یا حذف بخشی از فایلهای کلیدی وردپرس افزایش پیدا میکند.
بهعنوان نمونه در برخی سایتهای فروشگاهی که وردپرس آنها بروز نشده است، مشاهده شده که پس از حملههای مخرب، فایلهای ضروری هسته وردپرس دچار تغییر شدهاند و همین موضوع باعث شده اتصال به پایگاهداده کاملاً مختل شود.
برای برطرف کردن این مشکل، بهترین کار، جایگزینی همه فایلهای هسته وردپرس با نسخه سالم است. در این فرآیند باید آخرین بسته وردپرس را فقط از وبسایت رسمی وردپرس (wordpress.org) دانلود کنیم تا مطمئن باشیم که فایلها بدون هیچگونه تغییر یا آلودگی هستند.

هنگام بارگذاری فایلهای جدید، لازم است سه بخش حساس سایت بدون تغییر باقی بماند که موارد زیر هستند:
- wp-config.php که اطلاعات ورود به پایگاهداده و سایر تنظیمات اختصاصی را ذخیره میکند.
- .htaccess که قوانین بازنویسی لینکها و برخی پیکربندیهای امنیتی را شامل میشود.
- پوشه wp-content که محتوای اصلی سایت مثل قالبها، افزونهها و فایلهای رسانهای را در خود نگه میدارد.

در عمل، شما فایلهای موجود (بهجز موارد ذکرشده) را جایگزین میکنید تا ساختار وردپرس از نو بازسازی شود. این کار کمک میکند تا اگر بخشی از فایلها دستکاری یا خراب شده باشند، مجدد به حالت استاندارد بازگردند و مشکل اتصال به پایگاهداده نیز حل شود.
4- ترافیک بالای سرور یا سایت
در بسیاری از مواقع دلیل نمایش خطای پایگاهداده در وردپرس این است که تعداد زیادی کاربر همزمان به سایت مراجعه میکنند یا درخواستهای زیادی به سمت سرور ارسال میشود. در این شرایط وقتی منابع هاست یا سرور محدود باشد، هاست دیگر توان پاسخگویی به این حجم درخواست را ندارد و اتصال به پایگاهداده ممکن است به صورت موقت قطع شود.

برای درک بهتر این موضوع، تصور کنید تعداد زیادی از افراد همزمان میخواهند از یک مغازه کوچک خرید کنند؛ فروشنده نمیتواند به همه افراد رسیدگی کند و بعضی از مشتریها مجبور میشوند منتظر بمانند یا دست خالی فروشگاه را ترک کنند.
مثلاً ممکن است هنگام برگزاری یک فروش ویژه یا تخفیف بزرگ، هزاران نفر بهطور همزمان وارد سایت شوند تا سفارش ثبت کنند. در چنین شرایطی اگر سرور منابع کافی نداشته باشد، احتمال نمایش خطای پایگاهداده یا کندی سایت بهطور قابلتوجه افزایش پیدا میکند.
این مشکل معمولاً موقتی است و ممکن است یکبار سایت را باز کنید و خطا ببینید و در رفرش بعدی سایت بدون مشکل یا با سرعت کمتر بارگذاری شود. به همین دلیل اگر سایت شما بازدید زیادی دارد یا تعداد اتصالات پایگاهداده بالاست، لازم است از هاستی استفاده کنید که منابع کافی در اختیار داشته باشد تا بتواند به صورت همزمان درخواستها را مدیریت کند.
5- قالب و افزونهها
با اینکه احتمال بروز این مشکل نسبت به سایر عوامل کمتر است، اما برخی قالبها و افزونههایی که کدنویسی ضعیف یا غیراستاندارد دارند، میتوانند باعث ایجاد خطای ارتباط با پایگاهداده در وردپرس شوند. این مسئله معمولاً زمانی رخ میدهد که افزونه یا قالب موردنظر درخواستهای سنگین و غیرضروری به پایگاهداده ارسال کند یا منابع سرور را بیش از اندازه مصرف کند.

برای مثال، تصور کنید افزونهای نصب کردهاید که هر بار بازدیدکنندهای وارد سایت میشود، اطلاعات اضافی و بیدلیل را از پایگاهداده دریافت میکند. اگر این اتفاق همزمان برای صدها کاربر رخ دهد، سرور یا همان هاست سایت قادر به پاسخگویی نخواهد بود و در نهایت سایت دچار اختلال میشود.
اگر دسترسی به پیشخوان وردپرس دارید، بهترین راهحل این است که همانند تصویر زیر همه افزونهها را بهصورت موقت غیرفعال کنید و سپس یکییکی آنها را دوباره فعال کنید تا مشخص شود مشکل از کدام افزونه یا قالب است. این روش به شما کمک میکند که مقصر اصلی را سریعتر پیدا کنید.

در صورتی که پیشخوان وردپرس در دسترس نباشد، میتوانید این کار را مستقیماً از طریق هاست انجام دهید. کافی است وارد پنل مدیریت فایل (File Manager) هاست شوید، به مسیر wp-content/plugins بروید و نام پوشه افزونه موردنظر را تغییر دهید (مثلاً یک عبارت مانند -disabled به انتهای نام پوشه افزونه اضافه کنید). این تغییر باعث میشود افزونه بهطور خودکار غیرفعال شود.

برای غیرفعالسازی قالب، باید وارد پوشه wp-content/themes شوید و نام قالب فعال را تغییر دهید یا بهطور موقت حذف کنید. در این حالت وردپرس بهطور خودکار قالب پیشفرض (مانند Twenty Twenty-One) را فعال خواهد کرد (به شرطی که یکی از قالبهای پیشفرض وردپرس در کنار قالب اصلی شما در هاست وجود داشته باشد.)

همچنین غیر فعال کردن قالب از طریق پیشخوان وردپرس هم امکان پذیر است.
(قبل از غیرفعالسازی قالب حتما از آن بکاپ تهیه کنید.)
اگر نیاز به راهنمایی تصویری یا توضیحات کاملتر دارید، میتوانید به مقاله آموزشی مربوط به فعال کردن قالبها و افزونهها از طریق هاست مراجعه کنید.
6- پیگیری مشکلات از طریق شرکت میزبانی (Hosting)
در برخی مواقع، دلیل بروز خطای عدم اتصال به پایگاهداده ارتباطی با تنظیمات سایت ندارد و مشکل از طرف شرکت هاستینگ ایجاد میشود. این موضوع بهویژه زمانی رخ میدهد که پایگاهداده روی سروری جداگانه میزبانی شود و ارتباط بین سرور اصلی سایت و سرور دیتابیس بهدلیل اختلال شبکه یا محدودیتهای فایروال قطع شود.

برای مثال، بعضی هاستینگها برای بهبود سرعت، دیتابیس سایت را روی سرور اختصاصی قرار میدهند. اگر این سرور دچار مشکل شود یا ارتباط بین دو سرور مختل گردد، سایت حتی با وجود فایلهای سالم هم از دسترس خارج میشود.
به همین دلیل، اگر با چنین خطایی مواجه شدید و پس از بررسی فایلهای وردپرس، اطلاعات اتصال به دیتابیس و افزونهها، مشکل همچنان وجود داشت، بهتر است موضوع را هرچه سریعتر با تیم پشتیبانی شرکت هاستینگ مطرح کنید. آنها میتوانند وضعیت سرور دیتابیس و ارتباط شبکه را بررسی و مشکل را برطرف کنند.
7- بازگردانی آخرین بکاپ به عنوان راهکار آخر
در صورتیکه هیچیک از روشهای قبلی نتیجهای نداد، آخرین راهحل میتواند بازگردانی آخرین نسخه بکاپ هاست باشد. این روش برای سایتهایی که شرکت هاستینگ آنها بهطور منظم بکاپگیری انجام میدهد، بسیار کاربردی است.

برای مثال، اگر شرکت هاستینگ شما هر شب نسخه پشتیبان تهیه میکند، میتوانید با ارسال یک تیکت به پشتیبانی شرکت هاستینگ درخواست کنید که نزدیکترین بکاپ سالم را قبل از بروز خطا بازیابی کنند.
نکته مهم این است که با بازگردانی بکاپ، تغییرات و اطلاعاتی که پس از تاریخ آن بکاپ ایجاد شدهاند، از بین میروند و روی سایت نمایش داده نمیشوند. بنابراین بهتر است پیش از انجام این کار، تاریخ بکاپ را با دقت بررسی کنید تا از دست رفتن دادههای مهم جلوگیری شود.
جمعبندی و صحبت نهایی
خطای «برقراری ارتباط با پایگاهداده» در وردپرس میتواند دلایل مختلفی داشته باشد، از مشکل در اطلاعات اتصال گرفته تا محدودیت منابع هاست یا خرابی فایلها. در این مقاله سعی کردیم مهمترین علتها و روشهای رفع این خطا را بهطور کامل توضیح دهیم تا بتوانید سایت خود را سریعتر به حالت عادی برگردانید.