این خطا یعنی فایل‌های یک جدول دیتابیس ناقص نوشته شده‌اند و MySQL تا تعمیر نشدن، آن جدول را باز نمی‌کند. در بیشتر موارد با یک کلیک درست می‌شود: در سی‌پنل، Manage My Databases، بخش Modify Databases، دیتابیس را انتخاب کنید و Repair Database را بزنید. قبلش اگر می‌توانید یک بکاپ از دیتابیس بگیرید.

شکل‌های خطا

پیام معنی
Table ‘./db/wp_options’ is marked as crashed and should be repaired جدول خراب و قابل تعمیر است
Table … is marked as crashed and last (automatic?) repair failed تعمیر خودکار جواب نداده؛ باید دستی تعمیر شود
Incorrect key file for table فهرست (Index) جدول خراب است
Got error 127 / 134 / 145 from storage engine همان خرابی با کد عددی
وردپرس: «یک یا چند جدول پایگاه‌داده در دسترس نیست» همان؛ وردپرس تعمیر را پیشنهاد می‌کند

راه ۱: سی‌پنل

  1. در سی‌پنل، بخش Databases، روی Manage My Databases بزنید.
  2. در بخش Modify Databases، از فهرست Check Database دیتابیس سایت را انتخاب و دکمه را بزنید. گزارشی از وضعیت همه‌ی جدول‌ها می‌آید.
  3. اگر جدولی خطا داشت، برگردید و در فهرست Repair Database همان دیتابیس را انتخاب و دکمه را بزنید.
  4. صبر کنید تا صفحه‌ی نتیجه بیاید و سایت را دوباره باز کنید.
بخش Modify Databases در سی‌پنل با دکمه‌های Check Database و Repair Database
بخش Modify Databases در سی‌پنل؛ اول Check و بعد Repair

راه ۲: phpMyAdmin

  1. phpMyAdmin را باز کنید و از ستون کناری، دیتابیس را انتخاب کنید.
  2. تیک جدول خراب را بزنید (یا با Check all همه را).
  3. از منوی پایین جدول (With selected) گزینه‌ی Repair table را انتخاب کنید.

این راه وقتی خوب است که فقط یک جدول خراب است و نمی‌خواهید به بقیه دست بزنید. (آشنایی با phpMyAdmin)

راه ۳: ابزار تعمیر وردپرس

  1. در فایل wp-config.php این خط را اضافه کنید:
    define('WP_ALLOW_REPAIR', true);
  2. آدرس yourdomain.com/wp-admin/maint/repair.php را باز کنید و «تعمیر پایگاه‌داده» را بزنید.
  3. بعد از پایان، آن خط را حذف کنید. این صفحه بدون ورود باز می‌شود و نباید فعال بماند.

تعمیر جواب نداد

وضعیت راه
پیام می‌گوید موتور جدول از Repair پشتیبانی نمی‌کند جدول InnoDB است؛ این خطا برای آن معمولاً معنی دیگری دارد. تیکت بزنید
فضای هاست پر است تعمیر به فضای موقت نیاز دارد؛ اول جا باز کنید (آزادسازی فضا)
تعمیر انجام شد ولی داده‌ها ناقص است همان جدول را از بکاپ برگردانید
هر چند روز دوباره خراب می‌شود علت ریشه‌ای را پیدا کنید؛ پایین را ببینید

روی هاست رایکت از دیتابیس‌ها روزانه بکاپ گرفته می‌شود (چهار نسخه‌ی آخر نگهداری می‌شود) و بازگردانی آن در حال حاضر با تیکت است؛ نام دیتابیس و تاریخ موردنظر را بنویسید. (بکاپ و بازگردانی دیتابیس)

چرا جدول خراب می‌شود؟

  • پر شدن فضای هاست وسط نوشتن؛ شایع‌ترین علت.
  • قطع شدن یک عملیات سنگین مثل درون‌ریزی یا به‌روزرسانی بزرگ.
  • جدول‌های MyISAM: این موتور قدیمی در برابر قطع ناگهانی حساس است. جدول‌های پرنوشتن (سشن، لاگ، آمار) بیشتر خراب می‌شوند.
  • افزونه‌ای که بی‌وقفه در یک جدول می‌نویسد.

تبدیل به InnoDB

اگر یک جدول MyISAM مدام خراب می‌شود، تبدیلش به InnoDB معمولاً مشکل را برای همیشه حل می‌کند. در phpMyAdmin جدول را باز کنید، زبانه‌ی Operations، بخش Table options، گزینه‌ی Storage Engine را روی InnoDB بگذارید و Go را بزنید. قبلش بکاپ بگیرید.

سوال‌های رایج

Repair داده‌ها را پاک می‌کند؟

معمولاً نه. ولی اگر بخشی از فایل واقعاً از بین رفته باشد، ردیف‌های خراب کنار گذاشته می‌شوند. برای همین قبلش بکاپ می‌گیریم.

Check بدون Repair ضرری دارد؟

نه. فقط بررسی می‌کند و چیزی را تغییر نمی‌دهد.

این با خطای اتصال به دیتابیس یکی است؟

نه. آن خطا درباره‌ی نام کاربری، رمز یا در دسترس نبودن سرور دیتابیس است. (خطای اتصال به پایگاه‌داده)