phpMyAdmin je praktičan alat, ali ima ozbiljna ograničenja kod uvoza velikih SQL datoteka — upload limit, max execution time, memory limit. Ova uputa pokazuje kako zaobići ograničenja i, što je važnije, kada prebaciti na mysql komandnu liniju.
1. Provjeri ograničenja phpMyAdmin-a
U phpMyAdminu idite na Home → Server → Variables i potražite:
max_allowed_packet— MySQL ograničenje po paketu (default 64MB, često premalo).wait_timeout— koliko sekundi konekcija može biti u tijeku bez aktivnosti.
Zatim PHP strana, preko Home → donji panel, ili phpinfo:
upload_max_filesize— default 2-50MB.post_max_size— mora biti ≥ upload_max_filesize.memory_limit— 128MB je premalo za uvoz većih dumpova.max_execution_time— default 30s, nedovoljno za uvoz >50MB.
2. Privremeno podigni PHP limite (cPanel / DirectAdmin)
cPanel — MultiPHP INI Editor
- cPanel → Software → MultiPHP INI Editor.
- Odaberite domenu ili PHP.ini basic mode.
- Postavite:
upload_max_filesize = 512Mpost_max_size = 512Mmemory_limit = 512Mmax_execution_time = 600max_input_time = 600
- Save. Vratiti nakon uvoza da se PHP ne žari resursima.
DirectAdmin — Custom PHP.INI
Evolution skin: User Level → Domain Setup → PHP settings → edit istog sadržaja.
3. Upload velike SQL datoteke preko File Managera
Umjesto uvoza kroz phpMyAdmin upload polje (koje i dalje ograničava):
- Podijelite SQL u manje dijelove ako je >500MB, ili koristite gzip (
file.sql.gz). - Uploadajte kroz File Manager ili preko SFTP u korijenski folder javnog dijela (ili bolje — izvan
public_html). - U phpMyAdmin odaberite bazu → Import → pod "File to import" odaberite "Web server upload directory" (
UploadDir) ako je postavljen, ili koristite "From URL".
Ako Web server upload directory nije vidljiv, u cPanelu javite podršci da aktivira $cfg['UploadDir'] u phpMyAdmin konfiguraciji.
4. Bolje rješenje — mysql preko SSH
Za bilo što iznad 200MB, komandna linija je brža, pouzdanija i bez web timeouta:
# uploadana datoteka: dump.sql.gz u home folderu
zcat ~/dump.sql.gz | mysql -u cpaneluser_db -p cpaneluser_baza
# ili bez kompresije
mysql -u cpaneluser_db -p cpaneluser_baza < ~/dump.sql
Prednosti:
- Bez PHP limita.
- Bez web timeouta.
- Progress vidljiv ako koristite
pv:
pv ~/dump.sql | mysql -u cpaneluser_db -p cpaneluser_baza
5. Za jako velike dumpove — BigDump script
Ako nemate SSH pristup (shared hosting), BigDump (staggered MySQL dump importer, ozerov.de) izvršava SQL u komadima preko PHP-a, pa zaobilazi max_execution_time.
- Preuzmite
bigdump.php. - Uredite kredencijale na vrhu:
$db_server = 'localhost'; $db_name = 'cpaneluser_baza'; $db_username = 'cpaneluser_db'; $db_password = 'PASSWORD'; - Upload
bigdump.php+dump.sqlu isti folder (javno dostupan). - Otvorite
https://domena/putanja/bigdump.php, kliknite Start import. - Obavezno obrišite
bigdump.phpi SQL file nakon uvoza.
6. Česte greške i kako ih riješiti
MySQL server has gone away
Paket prevelik za server. Povećaj max_allowed_packet (u my.cnf ili SET GLOBAL max_allowed_packet=256M;) ili razbij dump na manje dijelove.
#1064 syntax error near...
Najčešće krivi character set u dumpu — latin1 znakovi u utf8mb4 bazi. Rješenje:
mysql --default-character-set=utf8mb4 -u user -p baza < dump.sql
#1452 Cannot add or update a child row: foreign key constraint fails
Redoslijed INSERT-a ne odgovara FK relacijama. Na početku dumpa privremeno isključite provjeru:
SET FOREIGN_KEY_CHECKS=0;
-- ... vaši INSERT-i ...
SET FOREIGN_KEY_CHECKS=1;
#1153 Got a packet bigger than max_allowed_packet
Isto kao prvo — povećajte limit ili napravite novi dump s --max_allowed_packet=256M.
Encoding problemi (č, ć, š, ž, đ postaju ?)
Provjerite da dump počinje s SET NAMES utf8mb4, i da je ciljna baza utf8mb4_unicode_ci. Pri stvaranju nove baze:
CREATE DATABASE novabaza CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
7. Nakon uvoza — sanity check
-- brojka redaka u glavnim tablicama
SELECT COUNT(*) FROM users;
SELECT COUNT(*) FROM entries;
-- provjeri integritet InnoDB
ANALYZE TABLE users, entries;
-- provjeri charset
SELECT TABLE_NAME, TABLE_COLLATION
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = DATABASE();
8. Sigurnosne napomene
- Nikad ne uploadajte SQL s produkcijskim podacima u javno dostupan folder — koristite folder iznad
public_htmli ograničite pristup. - Obrišite dump i import alate nakon uvoza.
- Nakon uvoza vratite PHP limite na normalu — previsok
memory_limitglobalno može rušiti server pod prometom. - Backupajte ciljnu bazu prije uvoza. Uvoz može brisati postojeće tablice ako dump sadrži
DROP TABLE.
Ako nemate SSH i trebate uvesti bazu >500MB, javite se podršci — možemo provesti uvoz preko komandne linije bez da ikada izađe na web stranu.