برطرف کردن خطا در برقراری ارتباط با پایگاه داده
ارور Error Establishing a Database Connection یا خطا در برقراری ارتباط با پایگاه داده یکی از ارورهایی است که تعداد زیادی یا حتی میتوان گفت تمامی کاربران سیستم مدیریت محتوای وردپرس با آن مواجه شدهاند
آیا تا کنون با خطای برقراری ارتباط با پایگاه داده در وردپرس برخورد کردهاید؟ این خطا یک خطای جدی است که وبسایت وردپرسی شما را برای کاربران غیرقابل دسترسی میکند.
خطای برقراری ارتباط با پایگاه داده هنگامی رخ میدهد که وردپرس قادر به ایجاد ارتباط با بانک اطلاعاتی نباشد. عوامل زیادی وجود دارند که میتوانند در برقراری ارتباط با پایگاه داده در وردپرس تداخل ایجاد کنند. به همین دلیل عیبیابی این خطا برای مبتدیان معمولا کمی دشوار است.
در کیمیا هاست این مقاله به شما نشان خواهد داد که چگونه میتوانید خطای برقراری ارتباط با پایگاه داده را به راحتی در وردپرس برطرف کنید.
خطا در اتصال به دیتابیس مشخصا به این معناست که سایت شما (فایل های php وردپرس شما) به دیتابیس سایتتان دسترسی ندارند. بله معنای این خطا مشخص است … اما همین معنای کاملا واضح میتواند دلایل گوناگونی داشته باشد. مثلا :
- نصب یا جابجایی وردپرس به طور کامل انجام نشده باشد
- دیتابیس سایت به طور اتفاقی حذف شده باشد
- اطلاعات اتصال به دیتابیس اشتباه باشد
- مشکلی در پیشوند جداول پایگاه داده وجود داشته باشد
- سطح دسترسی فایل های وردپرس اشتباه باشد
- آدرس سایت صحیح نباشد
- مشکل از پلاگین ها یا قالب ها ناشی شده باشد
- و در آخر ممکن است مشکلی در سرور وجود داشته باشد یا سرور اورلود شده باشد
(تعجب کردید که مشکل سرور آخرین مورد بود؟ حق دارید! چون متاسفانه چیزی که در میان اکثر کاربران در ایران باب شده این است که هر مشکلی برایشان پیش می آید اول از همه میگویند حتما مشکل از طرف سرور است … لطفا شما این مدلی نباشید! لطفا!)
در ادامه به شرح مراحل عیب یابی خطا در برقراری ارتباط با پایگاه داده در وردپرس خواهیم پرداخت اما پیش از اینکه به سراغ اصل ماجرا بروید، حتما یک بکاپ کامل از سایت خود در همین حالت ایجاد کنید. به هر حال کار از محکم کاری عیب نمیکند. و یک چیز مهم تر، اگر بکاپ جدیدی از سایت خود دارید که در زمان آن بکاپ وبسایت شما بدون مشکل کار میکرده، همین حالا به سادگی میتوانید آن بکاپ را بازگردانی کرده و خیال خودتان را راحت کنید. اما اگر امکان انجام چنین کاری برایتان میسر نیست، میتوانید در ادامه ی مراحل عیب یابی با ما همراه شوید.
غیر فعال کردن پلاگین ها
اول اجازه بدهید این نکته را روشن کنیم که منظورمان این نیست که اگر هیچ پلاگین جدیدی نصب نکرده اید و پلاگینی را هم به روز رسانی نکرده اید و تغییری هم با پلاگینی روی سایتتان اعمال نکرده اید، حالا بیایید و همه پلاگین ها را غیر فعال کنید … طبعا باید تغییری در سایتتان ایجاد شده باشد که مربوط به پلاگین ها باشد تا به سراغ این مرحله بیایید. مثلا ممکن است اخیرا افزونه ی جدیدی روی سایتتان نصب کرده باشید و پس از آن مشکل برقراری ارتباط با پایگاه داده برایتان پیش آمده باشد. یا مثلا ممکن است به کمک یک افزونه ی امنیتی، پیشوند جداول یا سطح دسترسی فایلهایتان را عوض کرده باشید و همین امر موجب ایجاد مشکل در سایتتان شده باشد. از آنجایی که هر نوع تداخل بین افزونه ها و اعمال هر نوع تغییر از طرف یک افزونه بر روی دیتابیس، میتواند منجر به عدم دسترسی وردپرس به دیتابیس سایتتان شود، بنابراین در این مرحله لازم است همه ی افزونه های موجود روی سایتتان را غیر فعال نمایید. (روش غیر فعال کردن افزونه ها را با کلیک روی اینجا بخوانید) حال اگر پس از غیر فعال کردن افزونه ها، سایتتان مجددا بالا آمد، محل مشکل را پیدا کرده اید. حالا باید افزونه ها را مجددا یکی یکی فعال کنید تا ببینید کدام یک باعث این مشکل بوده و برایش چاره ای بیاندیشید. اما اگر نه، طبعا باید به سراغ مراحل بعد بروید.
باید توجه داشته باشید که اگر افزونه ای، تغییری روی دیتابیس شما اعمال کرده باشد که منجر به داون شدن سایت شده باشد، غیر فعال کردن افزونه بی اثر خواهد بود و مشکل باید پس از عیب یابی در مراحل بعد، به یکی از روش هایی که در ادامه ذکر میکنیم برطرف شود.
چک کردن اطلاعات اتصال به دیتابیس
وارد هاستتان شده و در شاخه ی اصلی سایت (معمولا در public_html) فایل wp-config.php خود را یافته و آن را باز کنید. در این فایل بخشی وجود دارد که اطلاعات اتصال به دیتابیس را در آن مشاهده میکنید. مانند کد زیر :
۱
۲
۳
۴
۵
۶
۷
۸
۹
۱۰
۱۱
۱۲
|
// ** MySQL settings – You can get this info from your web host ** //
/** The name of the database for WordPress */
define(‘DB_NAME’, ‘database_name_here’);
/** MySQL database username */
define(‘DB_USER’, ‘username_here’);
/** MySQL database password */
define(‘DB_PASSWORD’, ‘password_here’);
/** MySQL hostname */
define(‘DB_HOST’, ‘localhost’);
|
اطلاعات بالا را به طور کامل بررسی کنید واطمینان حاصل کنید که نام دیتابیس، نام کاربری دیتابیس و رمز عبور دیتابیس با اطلاعات بالا مطابقت داشته باشند. (برای این کار میتوانید به کنترل پنل هاست خود مراجعه کرده و مشخصات درج شده در این بخش را با آنچه در هاست خود میبینید مشاهده کنید و از همه مهم تر اطمینان حاصل کنید که دیتابیس شما در هاستتان موجود باشد)
در تصویر بالا علاوه بر اینکه از نام دیتابیس و نام کاربری آن و موجود بودنش در هاست اطمینان حاصل کرده ایم، از این نکته هم مطمئن شدیم که یوزر صحیحی را به دیتابیس نسبت داده ایم و این یوزر اجازه ی دسترسی به دیتابیس را دارد.
در اینجا چند نکته وجود دارد. هرچند رمز دیتابیس شما ممکن است به نظر شما منطقی برسد و حاوی کارکتر های غیر مجاز هم نباشد، ولی متاسفانه وجود برخی کارکتر ها در دیتابیس منجر به عدم اتصال به دیتابیس خواهد شد. بنابراین در انتخاب رمز های عجیب و غریب برای دیتابیس زیاده روی نکنید … حتی گاهی پیش می آید که رمز هایی که خود سی پنل برای دیتابیس پیشنهاد میکند هم در اینجا جواب نمیدهند و با آنها نمیتوانید به پایگاه داده متصل شوید. پس اگر رمزتان بیش از حد عجیب و غریب است، آن را یکمی جمع و جورد تر کرده و به ترکیب عدد ها، حروف کوچک و بزرگ و مثلا علامت @ بسنده کنید! (توصیه بدی بود ولی واقعیت است) برای تغییر رمز عبور دیتابیستان کافی است در هاست خود به بخش MySQL Databases مراجعه کرده و در پایین صفحه در قسمت Current Users کاربر دیتابیس خود را پیدا کرده و در جلوی آن روی لینک Change Password کلیک کرده و رمز دیتابیستان را تغییر دهید تا با اطلاعات موجود در فایل کانفیگ مطابقت داشته باشد. مانند تصویر زیر :
همچنین اختصاص همه ی دسترسی ها را به یوزری که ساخته اید فراموش نکنید. نداشتن دسترسی های کافی میتواند یکی از دلایل مشکل وبسایت شما باشد. توجه داشته باشید که در صورت نیاز میتوانید یوزری که از قبل ایجاد کرده اید را یک بار حذف کرده و مجددا آن را ایجاد کنید. فقط یادتان باشد که در این حالت باید یوزر را مجددا به دیتابیس نسبت بدهید.
از طرفی گاهی ممکن است تمام اطلاعات وارد شده در اینجا درست باشند و با این وجود که این اطلاعات مثلا همین چند ساعت پیش درست کار میکرده اند، ولی باز هم اتصال با دیتابیس برقرار نشود. در اینجا چیز عجیبی که قبلا مشاهده کرده ایم این است که گاهی ممکن است صرفا تغییر عبارت localhost به آی پی ۱۲۷.۰.۰.۱ مشکل شما را برطرف کند. به نظر میرسد دلیل این امر این باشد که در یک لحظه وردپرس به هر دلیل قادر به دسترسی به سرویس mysql نبوده و یا این سرویس داون شده است و این اطلاعات در سیستم کش شده اند. حالا صرفا اینکه وردپرس را وادار کنید روی آدرس دیگری به دیتابیس متصل شود، مشکلتان را برطرف میکند.
بعد از اطمینان از اطلاعات بالا، حالا در فایل wp-config.php به دنبال خطی مشابه زیر بگردید :
۱
|
$table_prefix = ‘wp_’;
|
عبارت wp_ در کد بالا باید با پیشوند جداول دیتابیس شما مطابقت داشته باشد. بنابراین اگر فرضا با یک پلاگین امنیتی، پیشوند جداول را تغییر داده اید، پیشوند صحیح را در کد بالا جایگزین عبارت wp_ کرده و تغییرات را ذخیره کنید.
خوب، حالا وبسایت خود را چند بار ریفرش کنید. اگر وبسایتتان مجددا بالا آمده بود که خدا را شکر میکنیم. اما اگر نه … زمان تست اطلاعات دیتابیس فرا میرسد. بدیهی است که ممکن است در ورود اطلاعات اشتباهی صورت گرفته باشد. برای تست اطلاعات اتصال به دیتابیس، فایلی با نام dbtest.php در مسیر اصلی سایت خود ایجاد کرده و کد زیر را در آن قرار دهید :
۱
۲
۳
۴
۵
۶
۷
|
<?php
$link = @mysqli_connect(‘localhost’, ‘database_username’, ‘database_password’);
if (!$link) {
die(‘Could not connect’);
}
echo ‘Connected successfully’;
$link=null;
|
در کد بالا عبارات مشخصات دیتابیس را به شکل صحیح جایگزین your_hostname, database_username و database_password کنید. سپس فایل را در مرورگر خود فراخوانی کنید. (اگر فایل را در مسیر اصلی سایت قرار داده باشید آدرس آن از الگوی روبرو پیروی میکند http://domain.com/dbtest.php) در این حالت اگر پیام Connected successfully را دریافت کردید، اطلاعات اتصال صحیح بوده و ارتباط با دیتابیس به شکل صحیح انجام شده است ولی اگر پیام Could not connect را دریافت کنید، این مسئله به این مفهوم است که اطلاعات اتصال شما اشتباه است. لازم که نیست بگوییم چه کار کنید؟ (بله! از اول همین مرحله …)
اصلاح آدرس سایت
اگر وبسایت خود را به آدرس جدیدی منتقل کرده اید و فراموش کرده اید که آدرس صحیح را در تنظیمات وردپرس جایگزین کنید و یا به هر دلیل دیگری تغییر در آدرس سایتتان ایجاد شده که منجر به عدم تطابق آدرس ذخیره شده در دیتابیس و آدرسی که از روی آن در حال فراخوانی سایت هستید، شده باشد، همین مسئله میتواند دلیل بوجود آمدن خطای برقراری ارتباط با پایگاه داده باشد.
برای رفع این مشکل ابتدا به فایل wp-config.php در هاست خود مراجعه کنید. در این فایل به دنبال خطوط زیر بگردید :
۱
۲
|
define(‘WP_HOME’,‘http://your-site.com’);
define(‘WP_SITEURL’,‘http://your-site.com’);
|
اگر این خطوط را پیدا کردید، اطمینان حاصل کنید که آدرس درج شده در بخش http://your-site.com دقیقا مطابق با آدرس سایت شما باشد. اما اگر این دو خط را پیدا نکردید، خودتان آنها را به فایل wp-config.php اضافه کرده و آدرس صحیح سایتتان را در آن قرار داده و تغییرات را ذخیره کنید. مجددا وبسایت خود را مورد بررسی قرار دهید تا ببینید که آیا مشکل برطرف شده یا خیر. اگر مشکل همچنان پا برجا بود، خطوط درج شده را حذف کنید و عیب یابی را ادامه دهید.
حالا به سراغ فولدر wp-includes در هاستتان بروید و فایل functions.php را در آن بیابید. بررسی کنید و ببینید که آیا دو خط زیر را در آن پیدا میکنید یا خیر :
۱
۲
|
update_option( ‘siteurl’, ‘http://your-site.com’ );
update_option( ‘home’, ‘http://your-site.com’ );
|
اگر این دو خط در فایل ذکر شده موجود هستند، آدرس درج شده در آنها را با آدرس صحیح سایت خود جایگزین کنید و اگر این دو خط وجود ندارند، خودتان آنها را با آدرس های صحیح به ابتدای فایل دقیقا بعد از <?php بیافزایید و تغییرات را ذخیره کنید. وبسایت و ناحیه مدیریت آن را باز کرده و چند باری صفحه را ریفرش کنید. فراموش نکنید که بعد از انجام این کار و تست کردن اینکه وبسایتتان بالا می آید یا خیر، حتما مجددا این کد ها را از فایل ذکر شده حذف کنید. این دو خط کد نباید در فایل functions.php باقی بمانند.
در وارد کردن آدرس ها به این نکته توجه داشته باشید که اینکه آدرس را با www یا بدون www و همچنین با http یا با https وارد میکنید، کاملا حائز اهمیت است و هر نوع اشتباه در ورود آدرس میتواند منجر به عدم بارگذراری و عدم رفع مشکل وبسایت شما شود.
از آموزش آپلود فایل در وردپرس بیشتر بدانید
اصلاح دسترسی ها یا جایگزین کردن فایل های آسیب دیده
اگر تا اینجای کار مشکلتان هنوز برطرف نشده، میتوانیم فرض کنیم که ممکن است مشکلی در رابطه با فایل های هسته ی وردپرستان وجود داشته باشد. در اینجا نمیخواهیم زیاد وارد پیچیدگی دسترسی ها و توضیح دقیق آنها بشویم. به این نکته بسنده میکنیم که میتوانید هاستتان را بررسی کرده و اطمینان حاصل کنید که سطح دسترسی فایل های وردپرستان معادل ۶۴۴ و سطح دسترسی فولدرهایتان نیز معادل ۷۵۵ باشد. (معمولا این سطح دسترسی صحیح خواهد بود، ولی گاها ممکن است بر اساس محیط میزبانی دسترسی فولدر ها متفاوت باشد) اگر همه چیز مرتب است و باز هم مشکل پا برجاست، میتوانید به سادگی یک نسخه از وردپرس را مجددا دانلود کرده و فایل های هسته ی وردپرس را با نسخه ای که اخیرا دانلود کرده اید جایگزین کنید. برای انجام این کار، یک نسخه وردپرس خام (هماهنگ با نسخه فعلیتان) دانلود کنید، آن را بر روی کامپیوتر خود از حالت فشرده خارج کرده و فولدر wp-content و فایل wp-config-sample.php را از آن حذف نمایید و سپس فایل های اصلی وردپرس را به هاست وبسایتتان منتقل کنید. توجه داشته باشید که فولدر wp-content و فایل wp-config.php به هیچ عنوان نباید بازنویسی شده و از دست بروند. انجام این کار میتواند منجر به از دست دادن اطلاعات سایت شما شود. بنابراین این کار را با دقت انجام بدهید.
تعمیر یا Repair کردن دیتابیس وردپرس
خوب، حالا میرسیم به تعمیر دیتابیس. پس از انجام تمامی مراحل بالا، باز هم وبسایتتان به درستی کار نمیکند؟ احتمالا دیتابیس شما نیازمند تعمیرات جزئی است! این مسئله خصوصا در زمانی که فقط به ناحیه مدیریت یا فقط به ناحیه کاربری سایتتان دسترسی داشته باشید (ولی نه به هردو) کاملا محتمل است. برای انجام این کار ابتدا فایل wp-config.php خود را برای ویرایش باز کنید و سپس کد زیر را در آن قرار دهید :
۱
|
define( ‘WP_ALLOW_REPAIR’, true );
|
سپس تغییرات را ذخیره کنید و به آدرس زیر در سایتتان مراجعه کنید :
۱
|
http://your-site.com/wp-admin/maint/repair.php
|
طبعا نیازی به گفتن نیست ولی عبارت http://your-site.com را باید با آدرس صحیح سایتتان جایگزین کنید. پس بارگذاری این آدرس با صفحه ای مشابه تصویر زیر روبرو میشوید :
در صفحه ی فوق روی دکمه ی تعمیر پایگاه داده کلیک کنید تا عملیات تعمیر آغاز شود. پس از اتمام کار فراموش نکنید که بلافاصله کدی که به فایل wp-config.php اضافه کرده بودید را حذف کنید. عدم حذف این کد میتواند منجر به بروز مشکلات امنیتی برای سایت شما شود.
حالا مجددا به سایتتان مراجعه کنید و ببینید که اوضاع از چه قرار است … امیدواریم که مشکل سایتتان برطرف شده باشد اما اگر هنوز مشکل باقی است، فقط راه بعدی را پیش رو دارید …
با پشتیبان هاستتان ارتباط برقرار کنید
خواهشا همیشه در برقراری ارتباط با پشتیبانی این نکته را در نظر بگیرید که طلبکار بودن و اعلام اینکه ۱۰۰ درصد مشکل از هاست است، چیزی را حل نخواهد کرد. ممکن است واقعا اینطور نباشد و چیزی را از قلم انداخته باشید یا مرحله ای را به شکل صحیح انجام نداده باشید. بنابراین در این شرایط میتوانید با حفظ خونسردی و داشتن برخورد صحیح، از پشتیبان هاستتان درخواست راهنمایی کنید و بگویید که چه مراحلی را پشت سر گذاشته اید تا ببینید که چطور میتوانید مشکلی که هنوز پا برجاست را برطرف کنید.
اینجا جای مناسبی است تا مجددا بر روی اهمیت ایجاد بکاپ های منظم از سایتتان تاکید کنیم. طبیعی است که اگر بکاپی به روز از سایتتان در دسترس داشته باشید، همه چیز بدون انجام کارهای پیچیده، کاملا قابل حل خواهد بود و در کوتاه ترین زمان میتوانید وبسایتتان را مجددا سرپا کنید.
امیدوار هستیم که چنین مشکلاتی برای شما و وبسایتتان پیش نیامده باشد و در آینده هم برایتان اتفاق نیفتد ولی خوشحال میشویم بدانیم که اگر قبلا با این مشکل مواجه شده اید، به چه شکل توانسته اید آن را برطرف کنید … راه حل شما ممکن است بتواند به دیگران در حل این مشکل کمک کند.