همانطور که میدانید ابزارهای مختلفی برای راهاندازی یک وبسرور ساده روی کامپیوتر شخصی وجود دارد که شناختهشدهترین نرمافزار برای اجرای لوکال هاست، نرمافزار XAMPP هست. نرمافزار XAMPP یا زَمپ، مجموعهای از چند زیرساخت لازم برای راهاندازی سایت است: وبسرور آپاچی (A)، دیتابیس ماریا دیبی (M)، مفسر زبان پی اچ پی (P) و نهایتاً مفسر زبان پِرل (P). زمپ برای اجرای صحیح یک وبسایت وردپرسی، نیاز دارد که کلیه اجزای آن در حال اجرا باشند. در صورتی که هر کدام از این اجزا با مشکلی مواجه شوند، اجرای وبسایت وردپرسی ما با خطا مواجه میشود.
یکی از مواقعی که دچار خطا در اجرای زمپ میشویم، مربوط به زمانی است که MySQL با خطا مواجه میشود. در این مطلب، به مهمترین دلایل بروز خطای MySQL در زمپ و روشهای رفع این خطا پرداخته شده است.
فهرست مطالب:
دلایل خطای MySQL در زمپ
خطای MySQL در زمپ که اغلب به صورت MySQL shutdown unexpectedly نمایش داده میشود (تصویر زیر)، ممکن است به دلایل مختلفی رخ دهد: ۱) تداخل پورت مورد استفاده نرمافزار زمپ با سایر نرمافزارها و سرویسهای سیستم عامل، ۲) ایجاد اختلال توسط نرمافزار آنتیویروس شما یا فایروال سرور مورد استفاده و ۳) آسیب دیدن فایلهای دیتابیس به دلیل خطا در اجرای قبلی زمپ، از مهمترین دلایل بروز این خطا هستند.

ابتدا از پنل مدیریت زمپ، روی دکمه Logs روبروی MySQL کلیک کنید و فایل لاگ mysql_error.log را مطالعه کنید. با استفاده از این کار، سریعتر به راه حل مناسب برای مشکل خود خواهید رسید. در ادامه، روش رفع هر یک از مشکلات بیان شده را مرور خواهیم کرد.
تداخل پورت در زمپ
یکی از رایجترین دلایل مشاهده خطای MySQL در زمپ، بحث تداخل پورت موردنیاز آن با سایر برنامهها و سرویسهای موجود روی سیستم عامل است. به صورت پیشفرض، زمپ از پورت شماره 3306 برای اجرای MySQL استفاده میکند. چنانچه به هر دلیلی، امکان استفاده از این پورت برای زمپ فراهم نباشد، برنامه MySQL متوقف شده و خطای MySQL shutdown unexpectedly را نمایش میدهد. برای حل این مشکل به روش زیر عمل کنید.
جهت مشاهده پورتهای در حال استفاده، میتوانید از کنترل پنل زمپ به گزینه Netstat مراجعه کنید و فهرست کامل Listening Ports سیستم خود را مشاهده نمایید.

خوشبختانه زمپ در تغییر پورت پیشفرض اجزای خود دست ما را باز گذاشته است. پس چنانچه پورت 3306 توسط برنامه دیگری در حال استفاده بود، کافیست به کنترل پنل زمپ رفته و روی دکمه Config (گوشه سمت راست بالا) کلیک کنید. در پنجره جدید، روی دکمه Service and Ports Settings کلیک کنید و از زبانه MySQL، پورت پیشفرض آن را تغییر دهید. پس از این کار، میبایست یک بار MySQL را استارت کنید تا با پورت جدید شروع به کار کند.

نکته: از آنجایی که پورتهای 0 تا 1023 برای سیستم عامل و برنامههای اصلی رزرو شدهاند، پورت جدید را بزرگتر از 1024 انتخاب کنید تا مجدداً با خطای تداخل پورت مواجه نشوید.
تداخل با آنتیویروس/فایروال
یکی از دلایلی که باعث توقف اجرای MySQL میشود، محدودیت ایجاد شده توسط آنتیویروس سیستم یا فایروال سرور است. در این موارد حتماً یک بار آنتیویروس یا فایروال را به صورت موقت غیرفعال کرده و تست کنید که آیا MySQL اجرا میشود یا خیر. چنانچه بعد از غیرفعال کردن آنتیویروس یا فایروال، خطای MySQL در زمپ برطرف شد، یعنی اختلال از سمت آنها بوده است. در این موارد میتوانید برنامه MySQL یا پورت 3306 را در لیست سفید (whitelist) آنتیویروس یا فایروال خود قرار دهید تا مجدداً با خطای MySQL در زمپ مواجه نشوید.
آسیب دیدن فایلهای دیتابیس
گاهی اوقات در حین اجرای قبلی زمپ، MySQL به درستی بسته نشده و فایلهایی که ساختار دیتابیسهای MySQL را نگه میدارند، آسیب دیدهاند. در این موارد کافیست بکاپ خودکاری که از قبل موجود است را بازیابی کنید تا زمپ دوباره به درستی اجرا شود. با این کار، در واقع ساختار اولیه زمپ برای دیتابیسهای MySQL بازیابی میشود. نگران از دست رفتن دادههای خود نباشید! این بازیابی ارتباطی با محتوای دیتابیسهای شما ندارد و فقط ساختار MySQL را بازنشانی میکند. جهت انجام این کار، مراحل زیر را به دقت و گام به گام انجام دهید.
1) به محل نصب زمپ بروید. زمپ به صورت پیشفرض در مسیر C:\xampp
نصب میشود.
2) پوشه C:\xampp\mysql\data
را به یک نام دلخواه، تغییر نام دهید. مثلاً C:\xampp\mysql\data_old
3) یک پوشه جدید data
بسازید و کل محتوای پوشه C:\xampp\mysql\backup
را درون این پوشه data
جدید، کپی/پیست کنید.
4) به جز پوشههای mysql - performance_schema - phpmyadmin
، کلیه پوشههای موجود در پوشه قدیمی (C:\xampp\mysql\data_old
) را به درون پوشه data
جدید، کپی/پیست کنید. این پوشهها، در واقع دیتابیسهای سایتهای شما هستند.
5) فایل ibdata1
را از پوشه قدیمی (C:\xampp\mysql\data_old
) به پوشه data
جدید کپی/پیست کنید.
6) از کنترل پنل زمپ، یک بار MySQL را ریستارت کنید.
با انجام درست این مراحل، خطای MySQL در زمپ برطرف شده و میتوانید مجدداً از آن استفاده کنید.