Aktualizacja: październik 2026
- Objaw
- phpMyAdmin nie przyjmuje pliku .sql, pokazuje zbyt mały „Maksymalny rozmiar” albo import kończy się błędem
- Najczęstsza przyczyna
- Limity PHP: upload_max_filesize i post_max_size, rzadziej czas wykonania skryptu
- Najszybsze obejście
- Spakowanie pliku do .sql.gz lub .zip i ponowny import
- Czy zrobisz to sam?
- Tak, w panelu hostingu lub przez SSH. Na serwerze firmowym najpierw zrób kopię
Szybka odpowiedź
Limit w phpMyAdmin to w praktyce limit PHP na serwerze: wartość upload_max_filesize (rozmiar jednego pliku) i post_max_size (rozmiar całego wysyłanego formularza). Najpierw spróbuj spakować plik do .sql.gz albo .zip, bo phpMyAdmin importuje skompresowane pliki, a zrzut SQL zwykle bardzo dobrze się kompresuje. Jeśli to nie wystarczy, podnieś limity w panelu hostingu, w pliku .user.ini lub php.ini, a przy naprawdę dużych bazach pomiń phpMyAdmin i zaimportuj bazę poleceniem mysql przez SSH.
Problem wychodzi najczęściej przy przenoszeniu WordPressa lub sklepu na nowy hosting: eksport bazy przechodzi bez kłopotu, a przy imporcie na nowym serwerze phpMyAdmin pokazuje limit 2, 8 czy 50 MB. Poniżej masz rozwiązania od najprostszego, które działa na każdym hostingu, do metod wymagających dostępu do serwera.
Skąd bierze się limit importu w phpMyAdmin
phpMyAdmin jest aplikacją napisaną w PHP, więc plik z bazą wysyłasz na serwer zwykłym formularzem w przeglądarce. Decydują o tym ustawienia PHP opisane w dokumentacji PHP:
| Ustawienie | Co ogranicza | Domyślnie w PHP |
|---|---|---|
upload_max_filesize | Maksymalny rozmiar jednego przesyłanego pliku | 2M |
post_max_size | Rozmiar całego żądania POST (plik + pola formularza). Musi być większy niż upload_max_filesize | 8M |
memory_limit | Pamięć dostępna dla skryptu. Powinna być większa niż post_max_size | 128M |
max_execution_time, max_input_time | Czas działania skryptu i czas odbierania danych. Za krótki przerywa import dużej bazy | zależnie od konfiguracji serwera |
Hostingi ustawiają te wartości po swojemu, dlatego na jednym serwerze limit wynosi 2 MB, a na innym 256 MB. Dodatkowo phpMyAdmin ma własny limit czasu importu i eksportu ($cfg['ExecTimeLimit'], domyślnie 300 sekund).
Jak sprawdzić aktualny limit
Wejdź do phpMyAdmin, wybierz bazę po lewej i otwórz zakładkę Import. Przy polu wyboru pliku zobaczysz maksymalny rozmiar, np. „(Maksymalny rozmiar: 2,048KiB)”. To właśnie najmniejsza z wartości upload_max_filesize i post_max_size.

Jeśli plik jest większy, phpMyAdmin wyświetli komunikat w stylu „You probably tried to upload a file that is too large” (w polskiej wersji: prawdopodobnie próbowano wgrać zbyt duży plik) albo, gdy przekroczony jest post_max_size, mniej czytelny błąd, np. „Incorrect format parameter”. Oba mają tę samą przyczynę.
Jak wgrać za duży plik do phpMyAdmin: 6 sposobów
- Spakuj plik do .sql.gz lub .zip
To najprostsza metoda i działa nawet na tanim hostingu współdzielonym. phpMyAdmin importuje pliki skompresowane gzip, bzip2 i zip. Nazwa musi kończyć się formatem i kompresją, np.
baza.sql.gzlubbaza.sql.zip. Limit dotyczy rozmiaru wysyłanego pliku, a zrzut SQL to tekst, który kompresuje się wielokrotnie. Przy eksporcie możesz od razu wybrać kompresję w opcjach „Niestandardowy” albo spakować plik na komputerze (7-Zip, WinRAR, opcja „Kompresuj do pliku ZIP” w Windows). - Podnieś limit w panelu hostingu
Większość hostingów pozwala zmienić ustawienia PHP bez dostępu do php.ini. W cPanelu szukaj opcji typu „MultiPHP INI Editor” lub „Wybierz wersję PHP”, Opcje. W DirectAdminie, Plesku i panelach autorskich (home.pl, nazwa.pl, OVH, cyber_Folks, LH.pl) zwykle w sekcji ustawień PHP dla domeny. Ustaw np.
upload_max_filesize128M,post_max_size136M,memory_limit256M i odśwież zakładkę Import. - Użyj pliku .user.ini (PHP-FPM, FastCGI)
Na większości współczesnych serwerów PHP działa jako PHP-FPM. Wtedy w katalogu phpMyAdmina lub w katalogu głównym strony utwórz plik
.user.ini:upload_max_filesize = 128M post_max_size = 136M memory_limit = 256M max_execution_time = 300 max_input_time = 300PHP odczytuje takie pliki z opóźnieniem, domyślnie do 5 minut (
user_ini.cache_ttl). Część hostingów blokuje te zmiany albo narzuca własny maksymalny limit. - Zmień php.ini na VPS lub serwerze dedykowanym
Sprawdź, którego pliku używa serwer WWW: utwórz tymczasowo plik z
<?php phpinfo();i odczytaj pole „Loaded Configuration File” (potem usuń ten plik). Poleceniephp --iniw terminalu pokazuje konfigurację wersji CLI, która często jest innym plikiem. Na Debianie i Ubuntu to zwykle/etc/php/8.x/fpm/php.inilub/etc/php/8.x/apache2/php.ini. Po zmianie zrestartuj właściwą usługę:sudo systemctl restart php8.3-fpm sudo systemctl restart apache2Numer wersji PHP dopasuj do swojego serwera. W XAMPP na Windows edytujesz
C:\xampp\php\php.inii restartujesz Apache w panelu XAMPP. - Zaimportuj bazę przez SSH (najlepsze przy dużych bazach)
Jeśli masz dostęp do SSH, wgraj plik przez SFTP i zaimportuj go bezpośrednio do MySQL lub MariaDB. Ominiesz wtedy wszystkie limity PHP i przeglądarki:
mysql -u UZYTKOWNIK -p NAZWA_BAZY < baza.sql gunzip < baza.sql.gz | mysql -u UZYTKOWNIK -p NAZWA_BAZYNa hostingu współdzielonym często trzeba dopisać host bazy:
-h adres_serwera_bazy. Przy WordPressie możesz też użyć WP-CLI:wp db import baza.sql(dane do połączenia pobierze z wp-config.php). Na Windows z XAMPP polecenie mysql znajdziesz wC:\xampp\mysql\bin. - Wgraj plik do katalogu UploadDir lub podziel bazę
Na własnym serwerze możesz ustawić w
config.inc.phpopcję$cfg['UploadDir']. Plik wrzucony tam przez FTP pojawi się do wyboru w zakładce Import, bez wysyłania przez przeglądarkę. Gdy nie masz ani SSH, ani wpływu na limity, zostaje podział zrzutu na mniejsze części. Najbezpieczniej zrobić to już przy eksporcie: wyeksportuj tabele w kilku grupach, a największe tabele osobno. Dokumentacja phpMyAdmina wspomina też o narzędziach do dzielenia plików, np. BigDump, ale to zewnętrzny skrypt. Po użyciu usuń go z serwera.
W starszych poradnikach znajdziesz linie php_value upload_max_filesize 128M w pliku .htaccess. Działają tylko wtedy, gdy PHP jest modułem Apache (mod_php). Na serwerze z PHP-FPM, czyli na większości dzisiejszych hostingów, taki wpis zwykle kończy się błędem 500 całej strony. Wtedy usuń te linie i użyj .user.ini lub panelu hostingu.
Import przerywa się mimo poprawnego limitu
Jeśli plik się wgrywa, ale import przerywa się w połowie, przyczyna jest zwykle inna niż rozmiar pliku:
| Objaw | Przyczyna | Co zrobić |
|---|---|---|
| Import kończy się po kilku minutach, część tabel jest, części brak | Przekroczony czas wykonania (max_execution_time lub ExecTimeLimit) | Zaznacz w imporcie opcję częściowego importu (przerwanie przy zbliżaniu się do limitu czasu) i wznów od miejsca przerwania, podnieś limit czasu albo importuj przez SSH |
| #2006 MySQL server has gone away | Zbyt mała wartość max_allowed_packet w MySQL przy bardzo długich zapytaniach INSERT | Na VPS zwiększ max_allowed_packet. Na hostingu eksportuj z mniejszymi zapytaniami INSERT lub importuj przez SSH |
| #1273 Unknown collation utf8mb4_0900_ai_ci | Zrzut z MySQL 8 importowany do starszej MariaDB | Przy eksporcie wybierz zgodność ze starszą wersją lub zamień kolację w pliku na utf8mb4_unicode_ci (na kopii pliku) |
| #1044 lub #1227 Access denied | W zrzucie są polecenia CREATE DATABASE, DEFINER lub inne wymagające uprawnień, których nie masz na hostingu | Importuj do już utworzonej bazy, bez polecenia CREATE DATABASE, i usuń klauzule DEFINER z widoków lub wyzwalaczy |
| #1062 Duplicate entry | Importujesz do bazy, w której są już dane | Importuj do pustej bazy albo przy eksporcie zaznacz dodanie DROP TABLE |
Jak zmniejszyć bazę przed eksportem
Często nie trzeba walczyć z limitem, bo baza jest po prostu „zapchana”. W WordPressie i sklepach najwięcej miejsca zajmują logi, statystyki wtyczek, sesje, rewizje wpisów i tymczasowe dane w tabeli opcji. Przed migracją zrób kopię, a potem wyczyść zbędne dane lub pomiń tabele z logami przy eksporcie. Jeśli przenosisz całą stronę, cały proces opisałem w poradniku jak przenieść stronę na inny serwer. Gdy wybierasz nowy serwer, zwróć uwagę na limity PHP i dostęp do SSH, o czym piszę w tekście jaki hosting wybrać do WordPressa. Różnicę między hostingiem współdzielonym a własnym serwerem wyjaśniam w artykule czym jest serwer VPS.
Po udanym imporcie przywróć rozsądne limity, jeśli podniosłeś je tylko na czas migracji, i usuń z serwera pliki .sql, phpinfo.php oraz skrypty do dzielenia baz. Zostawiony w katalogu strony zrzut bazy może zostać pobrany przez każdego, kto zgadnie jego nazwę.
Migracja bazy nie wychodzi?
Przeniosę bazę i całą stronę na nowy serwer: WordPress, WooCommerce, PrestaShop lub stronę na własnym skrypcie. Zajmę się limitami, kodowaniem znaków i konfiguracją, a stara wersja zostaje nietknięta do czasu sprawdzenia nowej. Pracuję zdalnie albo na miejscu w Sieradzu i okolicach.
Najczęstsze pytania
Jak zwiększyć limit importu w phpMyAdmin?
Podnieś w PHP wartości upload_max_filesize i post_max_size (post_max_size większe niż upload_max_filesize) oraz memory_limit. Zrobisz to w panelu hostingu, w pliku .user.ini albo w php.ini na własnym serwerze, a potem zrestartujesz PHP.
Jak wgrać do phpMyAdmin plik większy niż limit bez zmiany ustawień?
Spakuj plik do formatu .sql.gz lub .sql.zip, bo phpMyAdmin importuje pliki skompresowane, a limit dotyczy rozmiaru wysyłanego pliku. Możesz też podzielić eksport na kilka mniejszych plików.
Gdzie jest plik php.ini?
Lokalizację pokaże funkcja phpinfo w polu Loaded Configuration File. Na Debianie i Ubuntu to zwykle katalog /etc/php/wersja/fpm lub /etc/php/wersja/apache2, a w XAMPP plik php.ini w folderze php katalogu instalacji XAMPP. Na hostingu współdzielonym zwykle nie masz do niego dostępu.
Dlaczego wpis php_value w .htaccess daje błąd 500?
Dyrektywy php_value działają tylko, gdy PHP jest modułem Apache. Na serwerach z PHP-FPM powodują błąd 500. Użyj wtedy pliku .user.ini lub ustawień PHP w panelu hostingu.
Jak zaimportować bardzo dużą bazę danych MySQL?
Najlepiej przez SSH poleceniem mysql -u użytkownik -p nazwa_bazy, przekierowując do niego plik SQL. Ta metoda nie podlega limitom PHP ani przeglądarki i działa dla baz liczonych w gigabajtach.