phpMyAdmin je praktično orodje, vendar ima resne omejitve pri uvozu velikih datotek SQL – omejitev nalaganja, najdaljši čas izvajanja, omejitev pomnilnika. Ta vadnica prikazuje, kako se izogniti omejitvam in, kar je še pomembneje, kdaj preklopiti na ukazno vrstico mysql .
1. Preverite omejitve phpMyAdmin
V phpMyAdmin pojdite na Domov → Strežnik → Spremenljivke in poiščite:
-
max_allowed_packet— omejitev MySQL na paket (privzeto 64 MB, pogosto premajhno). -
wait_timeout— koliko sekund je lahko povezava v teku brez aktivnosti.
Nato stran PHP, prek Domov → spodnje plošče ali phpinfo :
-
upload_max_filesize— privzeto 2–50 MB. -
post_max_size— mora biti ≥ upload_max_filesize. -
memory_limit— 128 MB je premajhno za uvoz večjih izpisov. -
max_execution_time— privzeto 30 s, nezadostno za uvoz > 50 MB.
2. Začasno zvišajte omejitve PHP (cPanel / DirectAdmin)
cPanel — urejevalnik MultiPHP INI
- cPanel → Programska oprema → MultiPHP INI Editor.
- Izberite domeno ali osnovni način PHP.ini .
- Komplet:
-
upload_max_filesize = 512M -
post_max_size = 512M -
memory_limit = 512M -
max_execution_time = 600 -
max_input_time = 600
-
- Shrani. Po uvozu obnovi, da PHP ne bo porabil virov.
DirectAdmin — PHP.INI po meri
Evolution skin: Uporabniška raven → Nastavitev domene → Nastavitve PHP → urejanje iste vsebine.
3. Naložite velike datoteke SQL prek upravitelja datotek
Namesto uvoza prek polja za nalaganje v phpMyAdmin (kar je še vedno omejujoče):
- Če je SQL večji od 500 MB, ga razdelite na manjše dele ali uporabite gzip (
file.sql.gz). - Naložite prek Upravitelja datotek ali prek SFTP v korensko mapo javnega dela (ali bolje — zunaj datoteke
public_html). - V phpMyAdmin izberite podatkovna baza → Uvozi → pod »Datoteka za uvoz« izberite » Imenik za nalaganje na spletni strežnik « (
UploadDir), če je nastavljeno, ali uporabite » Iz URL-ja «.
Če imenik za nalaganje na spletni strežnik ni viden, v cPanelu naročite podpori, naj v konfiguraciji phpMyAdmin aktivira $cfg['UploadDir'] .
4. Boljša rešitev – mysql prek SSH
Za vse nad 200 MB je ukazna vrstica hitrejša, zanesljivejša in brez spletnih časovnih omejitev:
# 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.sqlPrednosti:
- Brez omejitev PHP-ja.
- Brez časovne omejitve za splet.
- Napredek viden, če uporabljate
pv:
pv ~/dump.sql || mysql -u cpaneluser_db -p cpaneluser_baza5. Za zelo velike izpise podatkov — skript BigDump
Če nimate dostopa do SSH (deljeno gostovanje), BigDump (uvoznik izpisov MySQL z razporeditvijo, ozerov.de) izvaja SQL v kosih prek PHP-ja in tako zaobide max_execution_time .
- Prenesi datoteko
bigdump.php. - Uredite poverilnice na vrhu:
$db_server = 'localhost'; $db_name = 'cpaneluser_baza'; $db_username = 'cpaneluser_db'; $db_password = 'PASSWORD'; - Naložite
bigdump.php+dump.sqlv isto mapo (javno dostopno). - Odprite
https://domena/putanja/bigdump.phpin kliknite Začni uvoz . - Po uvozu obvezno izbrišite datoteko
bigdump.phpin datoteko SQL.
6. Pogoste napake in kako jih odpraviti
Strežnik MySQL je izginil
Paket je prevelik za strežnik. Povečajte max_allowed_packet (v my.cnf ali SET GLOBAL max_allowed_packet=256M; ) ali pa razdelite izpis na manjše dele.
#1064 sintaktična napaka blizu ...
Najpogostejši napačen nabor znakov v izpisu so znaki latin1 v zbirki podatkov utf8mb4 . Rešitev:
mysql --default-character-set=utf8mb4 -u user -p baza < dump.sql#1452 Podrejene vrstice ni mogoče dodati ali posodobiti: omejitev tujega ključa ni uspela
Vrstni red INSERT se ne ujema z relacijami FK. Začasno izklopite preverjanje na začetku izpisa:
SET FOREIGN_KEY_CHECKS=0; -- ... vaši INSERT-i ... SET FOREIGN_KEY_CHECKS=1;#1153 Prejel sem paket, večji od max_allowed_packet
Enako kot prvič – povečajte omejitev ali naredite nov izpis z --max_allowed_packet=256M .
Težave s kodiranjem (č, ć, š, ž, đ postanejo ?)
Prepričajte se, da se izpis začne z SET NAMES utf8mb4 in da je ciljna baza podatkov utf8mb4_unicode_ci . Pri ustvarjanju nove baze podatkov:
CREATE DATABASE novabaza CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;7. Po uvozu – preverjanje ustreznosti
-- 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. Varnostni napotki
- Nikoli ne nalagajte SQL-a s produkcijskimi podatki v javno dostopno mapo – uporabite mapo nad
public_htmlin omejite dostop. - Po uvozu izbrišite orodja za izvoz in uvoz.
- Po uvozu vrnite omejitve PHP na normalno vrednost – previsoka vrednost
memory_limitglobalno lahko povzroči sesutje strežnika zaradi velikega prometa. - Pred uvozom varnostno kopirajte ciljno bazo podatkov. Uvoz lahko izbriše obstoječe tabele, če izpis vsebuje
DROP TABLE.
Če nimate SSH in morate uvoziti bazo podatkov, večjo od 500 MB, se obrnite na podporo – uvoz lahko izvedemo prek ukazne vrstice, ne da bi se kdaj odprla spletna stran.