
به اشتراک بگذارید
ایمپورت دیتابیس حجیم در phpMyAdmin یکی از چالشهای همیشگی مدیران سرور و توسعهدهندگان وب است. وقتی حجم فایل SQL از مقدار مجاز در تنظیمات PHP یا MySQL بیشتر میشود، خطاهایی مانند memory limit یا upload_max_filesize exceeded ظاهر میشود. این مشکل بهخصوص در هاست های اشتراکی و سرورهایی با محدودیت منابع رایج است.
در این مقاله از بلاگ وب داده قصد داریم تمام روشهای ممکن برای رفع مشکل ایمپورت کردن دیتابیس حجیم در phpMyAdmin را بررسی کنیم ، از تغییر تنظیمات php.ini گرفته تا استفاده از ابزارهای جایگزین مانند BigDump و MySQL CLI. در پایان شما یاد میگیرید که چگونه بدون نیاز به دسترسی روت، دیتابیسهای بزرگ را بهصورت کامل و ایمن ایمپورت کنید.
کنترلپنل محبوب cPanel با رابط کاربری ساده و حرفهای، گواهی SSL رایگان برای تمام دامنهها، سرعت بالا با NVMe SSD و منابع اختصاصی، پشتیبانی 24 ساعته فنی
همین حالا پلن مناسب خود را انتخاب کنید 👇
آنچه در این مقاله میخوانید:
دلایل اصلی خطای ایمپورت دیتابیس حجیم در phpMyAdmin
برای مثال ممکن است هنگام بارگذاری فایل با پیغام خطا مواجه شوید، نوار پیشرفت متوقف بماند یا اتصال به سرور قطع شود. در این شرایط، سیستم بهجای اینکه فایل را کاملا وارد کند، فقط بخشی از آن را پردازش میکند و مابقی را نادیده میگیرد.
بهطور کلی این مشکل به سه بخش اصلی مربوط است:
- محدودیتهای PHP: تنظیماتی مانند حجم مجاز آپلود (upload_max_filesize)، اندازه کل درخواست (post_max_size) و مقدار حافظه مجاز (memory_limit) ممکن است پایینتر از حجم فایل شما باشد.
- محدودیتهای MySQL: مقادیری مانند
max_allowed_packetیا زمان پاسخگویی دیتابیس ممکن است باعث قطع فرآیند شوند. - عوامل محیطی: سرعت پایین اینترنت یا TimeOut مرورگر میتواند مانع از ارسال کامل فایل شود.
مهمترین دلایل عبارتاند از:
- محدودیت حجم آپلود فایل (upload_max_filesize) در php.ini
- پایین بودن مقدار post_max_size نسبت به حجم فایل دیتابیس
- پایین بودن memory_limit در PHP
- پایین بودن زمان اجرای اسکریپت (max_execution_time)
- قطع ارتباط مرورگر هنگام ارسال فایلهای بزرگ

روشهای رفع محدودیت حجم phpMyAdmin
- You probably tried to upload too large file.
Please refer to documentation for ways to workaround this limit.
- The file size exceeded the maximum size permitted
by your PHP configuration. روش 1: افزایش محدودیت حجم در php.ini
upload_max_filesize = 512M
post_max_size = 512M
memory_limit = 1024M
max_execution_time = 600 ✅post_max_size: حداکثر اندازه کل دادههایی که در یک درخواست ارسال میشوند مشخص شده (باید همیشه مساوی یا بیشتر از مقدار بالا باشد).
✅memory_limit: مقدار حافظهای که PHP میتواند برای اجرای اسکریپتها مصرف کند را در این قسمت مشخص می کنید(به عنوان مثال 1024 مگابایت برای پردازش دادههای حجیم).
✅max_execution_time: مدت زمانی (بر حسب ثانیه) که اسکریپت اجازه اجرا دارد، و عدد 600 یعنی 10 دقیقه. این یعنی اگر فایل خیلی بزرگ باشد، PHP تا 10 دقیقه فرصت دارد آن را پردازش کند.
sudo systemctl restart apache2
# یا
sudo systemctl restart nginx روش 2: استفاده از ابزار BigDump برای ایمپورت فایلهای حجیم
برای برطرف کردن مشکل ایمپورت کردن دیتابیس حجیم در phpMyAdmin به این روش کافی است مراحل زیر را طی کنید:
2️⃣سپس فایل SQL و bigdump.php را در یک پوشه روی هاست خود آپلود کنید.
3️⃣مشخصات اتصال دیتابیس را در ابتدای فایل BigDump وارد کنید. بهتر است این فولدر زیر مجموعه public_html باشد.
// اطلاعات دیتابیس:
$db_server = 'localhost'; // معمولاً localhost
$db_name = 'database_name'; // نام دیتابیس
$db_username = 'username';
$db_password = 'password';
// تنظیمات اجرا:
$linespersession = 3000; // تعداد خط در هر اجرا (3000 خوبه)
$delaypersession = 0; // تاخیر بین اجراها (0 یا 500)
// فایل SQL :
$filename = 'database.sql'; // نام فایل SQL شما
// یا برای فایل فشرده:
$filename = 'database.sql.gz';
// charset:
$db_connection_char_set = 'utf8mb4'; // مهم برای فارسی! 5️⃣سپس صفحه bigdump باز شده و لیست فایل ها نشان داده می شود کافی است روی Start Import کلیک کنید و منتظر بمانید تا کامل شود و در انتها پیغام Congratulations نمایش داده شود.
روش 3: ایمپورت دیتابیس با خط فرمان MySQL (CLI)
اگر به SSH یا ترمینال دسترسی دارید، سادهترین و سریعترین راه این است که فایل SQL را مستقیم به خودِ MySQL بدهید تا بدون محدودیتهای phpMyAdmin وارد شود. ترمینال SSH همان صفحهی خطفرمان سرور است و دستور زیر دقیقا به MySQL میگوید، این فایل را داخل این دیتابیس وارد کن.
mysql -u username -p database_name < backup.sql - username نام کاربری دیتابیس شماست.
- database_name نام دیتابیسی است که باید دادهها در آن ریخته شود.
- backup.sql همان فایل پشتیبان شماست. بعد از زدن Enter از شما رمز دیتابیس خواسته میشود و فرآیند ایمپورت شروع میشود. این روش برای فایلهای خیلی بزرگ هم جواب میدهد و معمولا از phpMyAdmin سریعتر و پایدارتر است.
✅ دقت داشته باشید که برای افزایش سرعت ایمپورت، میتوانید از گزینه –compress یا –quick مانند زیر استفاده کنید:
mysql --quick --compress -u username -p database_name < backup.sql روش 4: فشردهسازی فایل SQL پیش از ایمپورت در phpMyAdmin
این دستور باید در محیط SSH یا خط فرمان سیستم (در سرور یا لوکالهاست) اجرا شود. اگر از هاست اشتراکی استفاده میکنید، میتوانید آن را در بخش ترمینال کنترل پنل یا از طریق نرم افزارهایی مانند PuTTY یا Terminal اجرا کنید. phpMyAdmin در نسخههای جدید، این فایل را بهصورت خودکار باز میکند و محتویات آن را همانند فایل اصلی SQL وارد دیتابیس میکند.
gzip -c backup.sql > backup.sql.gz ✅phpMyAdmin در نسخههای جدید خود از فایلهای .gz پشتیبانی میکند و بهصورت خودکار آنها را اکسترکت میکند.
روش 5: تنظیمات MySQL برای phpMyAdmin
پارامتر max_allowed_packet در MySQL اندازه حداکثر بسته دادهای را که سرور میتواند در یک درخواست دریافت کند تعیین میکند. اگر این مقدار پایین باشد، هنگام ایمپورت فایلهای حجیم، فرآیند در وسط راه متوقف میشود.
🔶پس برای رفع آن باید مقدار max_allowed_packet را افزایش دهید تا MySQL بتواند حجم بیشتری از داده را در هر بار پردازش قبول کند. برای این کار دستور زیر را وارد کنید:
[mysqld]
max_allowed_packet = 512M
innodb_buffer_pool_size = 1G sudo systemctl restart mysql جلوگیری از خطای حافظه PHP ؛ توصیه های نهایی
1️⃣ همیشه از نسخههای جدید PHP (مانند PHP 8.2 یا بالاتر) استفاده کنید.
2️⃣ از مرورگرهایی مثل Chrome یا Edge جدید برای جلوگیری از قطع ارتباط استفاده کنید.
3️⃣حجم فایل SQL را قبل از ایمپورت با ابزارهایی مانند Notepad++ بررسی کنید (تعداد خطوط زیاد میتواند باعث Timeout شود).
4️⃣فایلهای قدیمی را بخشبندی (Split) کنید تا سریعتر آپلود شوند.
جمع بندی، ایمپورت کردن دیتابیس حجیم phpMyAdmin
سوالات متداول درباره ایمپورت کردن دیتابیس حجیم در phpMyAdmin
حداکثر حجم مجاز برای ایمپورت در phpMyAdmin چقدر است؟
به تنظیمات upload_max_filesize و post_max_size بستگی دارد، معمولا بین 128MB تا 2GB است.



