phpMyAdmin برای فایل‌های بزرگ ساخته نشده: سقف حجم آپلود و محدودیت زمان اجرا دارد. برای دیتابیس بزرگ‌تر از چند ده مگابایت، بهترین راه در سی‌پنل استفاده از بخش Backup است که فایل .sql.gz را مستقیم بازگردانی می‌کند و این محدودیت‌ها را ندارد. اگر فایل خیلی بزرگ است، فشرده‌سازی و تکه‌تکه کردن راه‌های بعدی‌اند.

خطا چه می‌گوید؟

پیام معنی
You probably tried to upload a file that is too large فایل از سقف آپلود بزرگ‌تر است
Script timeout passed زمان اجرا تمام شد؛ بخشی از جدول‌ها وارد شده
MySQL server has gone away یک دستور خیلی بزرگ بوده یا اتصال قطع شده
#1044 Access denied فایل دستور ساخت دیتابیس دارد که کاربر اجازه‌اش را ندارد
#1046 No database selected قبل از Import دیتابیسی را انتخاب نکرده‌اید
Unknown collation نسخه‌ی MySQL مقصد قدیمی‌تر از مبدأ است

راه ۱: فشرده کنید

فایل SQL متن ساده است و معمولاً تا یک‌دهم فشرده می‌شود. phpMyAdmin فایل‌های .sql.gz و .sql.zip را مستقیم می‌پذیرد. یک فایل ۲۰۰ مگابایتی ممکن است ۲۰ مگابایت شود و از سقف رد شود. در ویندوز با ۷-Zip فرمت gzip را انتخاب کنید.

راه ۲: بخش Backup سی‌پنل (پیشنهاد اصلی)

  1. دیتابیس خالی و کاربرش را بسازید و کاربر را با همه‌ی دسترسی‌ها به دیتابیس وصل کنید. (ساخت دیتابیس)
  2. نام فایل بکاپ را به نام همان دیتابیس تغییر دهید، با پسوند .sql.gz. این ابزار، دیتابیس مقصد را از روی نام فایل تشخیص می‌دهد.
  3. در سی‌پنل Backup را باز کنید و در بخش Restore a MySQL Database Backup فایل را انتخاب و Upload را بزنید.
  4. صبر کنید تا صفحه‌ی نتیجه بیاید؛ وسط کار صفحه را نبندید.

(بکاپ و بازگردانی دیتابیس در سی‌پنل)

راه ۳: سقف را بالا ببرید

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

راه ۴: تکه‌تکه کنید

  • هنگام خروجی گرفتن: در phpMyAdmin مبدأ، روش Custom را انتخاب کنید و جدول‌ها را در دو سه دسته خروجی بگیرید. جدول‌های بزرگ (معمولاً لاگ، آمار و سشن) را جدا کنید.
  • جدول‌های دورریختنی را نیاورید: لاگ افزونه‌های امنیتی، آمار بازدید و کش، گاهی نصف حجم دیتابیس‌اند. فقط ساختارشان را خروجی بگیرید، نه داده را.
  • ابزارهای تکه‌کننده‌ی SQL یک فایل بزرگ را به چند فایل کوچک قابل‌ایمپورت تقسیم می‌کنند.

راه ۵: تیکت

اگر فایل چند گیگابایت است، آن را با File Manager یا FTP در هاست آپلود کنید (بیرون از public_html) و با تیکت مسیر فایل و نام دیتابیس مقصد را بفرستید تا از سمت سرور وارد شود. اگر کل سایت را از هاست دیگری می‌آورید، انتقال رایگان را درخواست کنید و این مرحله را به تیم فنی بسپارید. (درخواست انتقال رایگان)

قبل از ایمپورت

بررسی چرا
دیتابیس مقصد خالی باشد جدول‌های هم‌نام خطای «already exists» می‌دهند
خط‌های CREATE DATABASE و USE اول فایل را حذف کنید نام دیتابیس در هاست جدید فرق دارد
فضای هاست کافی باشد دیتابیس بعد از ایمپورت از فایل فشرده خیلی بزرگ‌تر است
کدگذاری utf8mb4 تا متن فارسی به علامت سؤال تبدیل نشود

وسط کار قطع شد

ایمپورت نیمه‌کاره بدتر از ایمپورت‌نشده است، چون بعضی جدول‌ها هستند و بعضی نه. همه‌ی جدول‌ها را حذف کنید (در phpMyAdmin همه را انتخاب و Drop) و با یکی از راه‌های بالا از اول شروع کنید. تلاش دوباره روی همان دیتابیس نیمه‌پر خطای تکراری می‌دهد.

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

بعد از ایمپورت، سایت خطای اتصال به دیتابیس می‌دهد.

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

حروف فارسی به‌هم‌ریخته شده.

فایل با کدگذاری اشتباه خروجی یا وارد شده. دوباره از مبدأ با utf8mb4 خروجی بگیرید.

خروجی گرفتن هم تایم‌اوت می‌دهد.

به‌جای phpMyAdmin از بخش Backup سی‌پنل، قسمت Download a MySQL Database Backup استفاده کنید که محدودیت زمان ندارد.