آموزش رفع خطای اتصال به پایگاه داده در وردپرس

بخش: توسعه وب 29 بار مشاهده شده چهارشنبه ۱۰ آبان ۹۶ 0 نظر ارسال شده
آموزش رفع خطای اتصال به پایگاه داده در وردپرس

اگر مدت زیادی است که در محیط وب گشت و گذار می کنید، حداقل چند باری با این خطا مواجه شده اید. Error Establishing a Database Connection یکی از بدترین خطاهایی است که می تواند به دلایل بسیاری ایجاد شود. به عنوان یک مبتدی وردپرس، زمانی که بدون هیچ تغییری در سایت با این خطا رو به رو می شوید می تواند خسته کننده باشد. ما این موضوع را دیروز در سایت خودمان به کار گرفتیم.

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

نکته: پیش از ایجاد هر گونه تغییرات در پایگاه داده از آن backup تهیه کنید. 

 

چرا این خطا را دریافت می کنیم؟ 

به طور خلاصه، شما زمانی این خطا را دریافت می کنید که وردپرس قادر به ایجاد اتصال به پایگاه داده نیست. دلایلی که باعث عدم ایجاد اتصال وردپرس به پایگاه داده می شود متفاوت است. این امر می تواند به دلیل اشتباه بودن با تغییر کردن اعتبار ورود (login credential) به پایگاه داده شما باشد. عدم پاسخگویی سرور پایگاه داده یا خراب شدن پایگاه داده نیز از دیگر شرایطی است که باعث رخ دادن این خطا می شود. در تجربه ما، اکثرا این خطا به دلیل نوعی خطای سرور اتفاق می افتد اما می تواند عوامل دیگری نیز داشته باشد. بیایید نگاهی به چگونگی عیب یابی این مشکل بیاندازیم. 

 

آیا مشکل برای / wp-admin / نیز رخ می دهد؟ 

اولین کاری که باید انجام دهید، اطمینان از وجود همان خطا در دو قسمت front-end و back-end سایت (wp-admin) است. اگر پیام خطای " Error establishing a database connection" در هر دو صفحه یکسان بود، باید به مرحله بعدی بروید.

اگر خطای دیگری در مورد wp-admin وجود دارد، مثلا " One or more database tables are unavailable (یک یا چند جدول پایگاه داده در دسترس نمی باشند" ممکن است پایگاه داده نیاز به تعمیر داشته باشد. در نتیجه شما نیاز به تعمیر پایگاه داده خود دارید.می توانید این کار را با افزودن خط زیر در فایل wp-config.php خود انجام دهید. آن را پیش از خط "That’s all, stop editing! Happy blogging" در wp-config.php قرار دهید.

define('WP_ALLOW_REPAIR', true);

پس از انجام این مرحله می توانید تنظیمات را با مراجعه به این صفحه ببینید: http://www.yoursite.com/wp-admin/maint/repair.php

Error Establishing a Database Connection in WordPress

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

اگر این تعمیر مشکل را حل نکرد، یا شما دچار مشکل در اجرای تعمیر هستید، ادامه مطلب را بخوانید زیرا ممکن است راه دیگری برای رفع این خطا پیدا کنید. 

 

بررسی فایل WP-Config

WP-Config.php احتمالا تنها و مهم ترین فایل در وردپرس شماست. این فایل محلی است که جزئیات وردپرس برای اتصال پایگاه داده خود را در آن مشخص می کنید. اگر رمز عبور ریشه و یا رمز عبور کاربر پایگاه داده را تغییر دادید، باید این فایل را نیز تغییر دهید. اولین موردی که همیشه باید مورد بررسی قرار گیرد یکسان بودن تمام موارد در فایل wp-config.php است.

define('DB_NAME', 'database-name');
define('DB_USER', 'database-username');
define('DB_PASSWORD', 'database-password');
define('DB_HOST', 'localhost');

به یاد داشته باشید مقدار DB_Host همیشه نمی تواند localhost باشد و بسته به میزبان، متفاوت خواهد بود. برای میزبان های محبوب مانند HostGator، BlueHost، Site5، localhost استفاده می شود. برخی از افراد می گویند که این مشکلات را با جایگزین نمودن localhost با IP رفع کردند. در هنگام اجرای وردپرس در یک محیط سرور local معمولی است که این نوع مشکلات را مشاهده کنید. به عنوان مثال در MAMP، مقدار DB_Host هنگام تغییر به IP ممکن است کارآمد به نظر برسد.

define('DB_HOST', '127.0.0.1:8889');

این IP برای خدمات میزبانی وب آنلاین متفاوت خواهد بود.اگر تمام موارد در این فایل صحیح باشد (مطمئن شوید که اشتباه تایپی را چک کنید)، پس منصفانه است که بگوییم که در server end چیزی اشتباه است. 

 

وب میزبان (MySQL Server) خود را چک کنید

 اغلب این خطای ایجاد اتصال به پایگاه داده را در زمان هجوم زیاد ترافیک به سایتتان مشاهده می کنید. اساسا سرور میزبان شما نمی تواند بار را اداره کند (مخصوصا زمانی که از هاست اشتراکی استفاده می کنید). سایت شما بسیار آهسته عمل کرده و برای برخی از کاربران حتی خطا نمایش می دهد. بنابراین بهترین کاری که باید انجام دهید این است که با ارائه دهنده میزبانی خود تماس بگیرید و از آن ها بپرسید که آیا سرور MySQL شما پاسخگو است یا خیر.

اگر می خواهید سرور MySQL خود را آزمایش کنید، می توانید چندین کار را انجام دهید. سایت های دیگر را در یک سرور تست کنید تا ببینید آیا مشکل دارند یا خیر، اگر آنها نیز همان خطا را دریافت می کنند، قطعا در سرور خروجی شما موردی اشتباه می باشد. اگر در این حساب میزبانی هیچ سایت دیگری ندارید به سادگی به cPanel بروید و سعی کنید به phpMyAdmin دسترسی پیدا کنید و پایگاه داده را وصل نمایید. اگر توانستید اتصال برقرار کنید، پس باید اطمینان حاصل کنیم که آیا کاربر پایگاه داده دارای اجازه کافی است یا خیر. برای اینکار یک فایل جدید به نام testconnection.php ایجاد کنید و کد زیر را در آن قرار دهید:

<?php
$link = mysql_connect('localhost', 'root', 'password');
if (!$link) {
die('Could not connect: ' . mysql_error());
}
echo 'Connected successfully';
mysql_close($link);
?>

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

اگر با رفتن به phpMyAdmin نمی توانید به پایگاه داده متصل شوید، پس می دانید مشکل در سرور شما است. این به این معنی نیست که سرور MySQL شما پایین آمده بلکه می تواند به این معنی باشد که کاربر شما دارای اجازه کافی نمی باشد.در مورد ما، سرور خروجی در حال اجرا بود. تمام سایت های دیگر در سرور ها به جز WPBeginner کار می کردند. وقتی سعی کردیم به phpMyAdmin ما برسیم، خطا را دریافت کردیم: 

#1045 – Access denied for user ‘foo’@’%’ (using password: YES)

 با HostGator همراه شدیم و پشتیبانی آنها به سرعت مشکل را پیدا کرد. به علاوه مجوزهای کاربر مجددا تنظیم شد. مطمئن نیستیم که دلیل این اتفاق بوده همین بوده، اما ظاهرا که اینطور است. آنها مجددا وارد شدند و مجوزها را بازیابی کردند و ما توانستیم سایت را دوباره فعال ببینیم.بنابراین اگر خطای دسترسی را در اتصال به phpMyAdmin یا از طریق نتایج testconnection.php مشاهده کردید، باید با میزبان خود تماس بگیرید تا آن ها نسبت به  حل این مشکل اقدا کنند. 

راه حل هایی که برای دیگران کارآمد بوده است: 

مهم است به این امر که این راه ها ممکن است برای شما کار نکند توجه داشته باشید. ریسک نکنید و از داشتن backup کافی مطمئن شوید، تا در صورت بروز اشتباه از آن استفاده کنید.

دیپاک میتال (Deepak Mittal) گفت که مشتری اش خطای " پایگاه داده شما نیاز به تعمیر دارد (error that database needs to be repaired)رادریافت کرده و پس از تعمیر پایگاه داده، خطا برطرف نشده است. او موارد مختلفی را امتحان کرد و در آخر فهمید که مشکل از url سایت است. ظاهرا این تغییر، از ادامه یافتن خطا جلوگیری نمود. او این کوئری SQL را با رفتن به phpMyAdmin اجرا کرد:

UPDATE wp_options SET option_value='YOUR_SITE_URL' WHERE option_name='siteurl'

 اطمینان حاصل کنید که YOUR_SITE_URL را با مثال واقعی تغییر می دهید: http://www.softskill.ir. اگر پیشوند پایگاه داده پیش فرض وردپرس را تغییر دهید، wp_options متفاوت خواهد بود.به نظر می رسد اینکار برای دیپاک میتال و چند نفر دیگر که نظرات خود را در پست او قرار داده اند مفید واقع شده اند.

ساچینیوم  (Sachinum) پیشنهاد کرد که او قادر به اتصال پایگاه داده با testconnection.php بوده، بنابراین او نام کاربری wp-config.php را به root تغییر داده است. وردپرس مجددا خوب کار کرد و سپس تنظیمات را به پایگاه داده کاربر بازگرداند و دیگر آن خطا مشاهده نشد. او نمی توانست تصور کند که اشتباه در کجا رخ داده، اما نتیجه گرفت که علت آن اشتباه تایپی بوده است.

Cutewonders پیشنهاد کرد محتوای active_plugins را در جدول wp_options حذف کرده و محتویات recently_edited را ویرایش کنید. به نظر می رسید مشکل را حل کرده ایم.

 در منابع متعدد خواندیم که کاربران به سادگی یک نسخه تازه از وردپرس را آپلود کرده اند و این خطا را رفع نمودند.این خطا واقعا خسته کننده است. شما از کدام روش استفاده کرده اید؟ آن را با ما در میان بگذارید تا دیگر افراد مجبور نباشند زمان زیادی را صرف پیدا کردن راه حل کنند.

گروه تحقیقات سافت اسکیل
گروه تحقیقات سافت اسکیل

گروه تحقیقات سافت اسکیل به منظور افزایش سطح دانش جامعه، سعی در ترجمه، تالیف و تولید محتوای با کیفیت در زمینه های مختلف نرم افزاری دارد

شما چه نظر و یا سوالی درباره این نوشته دارید؟

پرســیدن سؤال جدید

سؤال های تخصصی خود را از ما بپرسید

دنبال کردن تلگرام کانال سافت اسکیل

https://telegram.me/softskill_ir

عملیات کاربران

خبـرنــامه

Newsletters

در خبــرنـامه سافت اسکیل عضو شویــد تا جدیدترین هـای سایت را بلافاصله در ایمیل خـود دریافت کنیـد

کلیک کنید و سوالات خود را از ما بپرسید
لطفا فرم سوال را پر کنید

سوال شما با موفقیت ثبت شد. برای اینکه بتوانیم به شما اطلاع رسانی کنیم، موارد زیر را وارد کنید:

لطفا چند لحظه منتظر بمانید ...