Uvoz in izvoz podatkovne baze v phpMyAdminu

cPanel Branje: 6 min

Pri selitvi spletne strani, prenosu razvojne kopije v produkcijo ali nalaganju stare varnostne kopije je treba podatkovno bazo shraniti kot datoteko SQL (izvoziti) in jo naložiti (uvoziti). Na gostovanju cPanel je za to namenjen phpMyAdmin, pri večji podatkovni bazi pa, če tvoj paket vključuje dostop SSH, odjemalec ukazne vrstice mysql. Na naših gostovanjih teče MariaDB 10.11, ki je združljiva z MySQL.

Vmesnik phpMyAdmin bolj splošno predstavlja naš blogovski zapis o osnovah phpMyAdmina.

Odpiranje phpMyAdmina

Prijavi se v cPanel in v skupini Podatkovne baze klikni ikono phpMyAdmin. phpMyAdmin se odpre brez ločenega gesla, s tvojim računom cPanel, na levi pa pokaže vse podatkovne baze računa.

Skupina Podatkovne baze v cPanelu: phpMyAdmin, Manage My Databases, Database Wizard

Izvoz podatkovne baze

  1. Na seznamu na levi klikni ime podatkovne baze, ki jo želiš izvoziti, nato zgoraj zavihek Izvozi.
  2. Način izvoza lahko ostane Hitro - prikaži samo minimalne možnosti, Oblika pa SQL.
  3. Klikni gumb Izvozi. Brskalnik prenese datoteko .sql z imenom podatkovne baze.

Zavihek Izvozi v phpMyAdminu: hitri izvoz v obliki SQL, gumb Izvozi

Pri večji podatkovni bazi izberi način Po meri - prikaži vse možne možnosti in v razdelku Izhod na seznamu Stiskanje točko stisnjeno z gzip: besedilna datoteka SQL se stisnjena običajno skrči na delček, phpMyAdmin pa jo zna tudi tako naložiti nazaj. V načinu po meri lahko posamezne tabele tudi izpustiš.

Če boš podatkovno bazo naložil v podatkovno bazo z drugim imenom (v cPanelu se ime vsake podatkovne baze začne z uporabniškim imenom), naj stikalo Dodaj izjave CREATE DATABASE / USE v načinu po meri ostane izklopljeno. To je privzeto stanje.

aWh gostovanje tudi samodejno varnostno kopira; obnovitev prejšnjega stanja podatkovne baze prikazuje članek o obnovitvi z JetBackup.

Uvoz varnostne kopije SQL

Uvoz naloži vsebino datoteke v že obstoječo podatkovno bazo. Če podatkovne baze še nimaš, jo najprej ustvari skupaj z uporabnikom (ustvarjanje podatkovne baze in uporabnika v cPanelu).

  1. Na seznamu na levi klikni ciljno podatkovno bazo, nato zavihek Uvozi.
  2. Z gumbom Izberi datoteko izberi varnostno kopijo. Naložiš lahko tudi stisnjeno datoteko (gzip, bzip2, zip), če se njeno ime konča z .sql.gz, .sql.bz2 ali .sql.zip. Zgornja meja nalaganja je po napisu (Max: 50MB) 50 MB; večjo varnostno kopijo stisni ali jo naloži prek SSH (glej spodaj).
  3. Nabor znakov datoteke naj ostane utf-8, Oblika SQL.
  4. Na dnu strani klikni gumb Uvozi.

Zavihek Uvozi v phpMyAdminu: izbrana datoteka t1-ok.sql.gz, Max: 50MB, nabor znakov utf-8, oblika SQL in gumb Uvozi

Po uspešnem uvozu se v zeleni vrstici prikaže sporočilo „Uvoz se je uspešno zaključil, izvedenih je bilo N poizvedb.”, pod njim pa izvedeni stavki.

Uspešen uvoz: Uvoz se je uspešno zaključil, izvedene so bile 3 poizvedbe

Pozor: zelena vrstica se prikaže tudi, če je med uvozom prišlo do napake. Takrat je pod njo viden tudi rdeč okvir Napaka z napačnim stavkom in kodo napake za „MySQL je vrnil:”, uvoz pa se je pri tem stavku ustavil. Rezultat vedno preglej do konca. Najpogostejše kode napak najdeš spodaj.

Napaka uvoza: pod zeleno vrstico rdeč okvir Napaka, #1273 - Unknown collation: utf8mb4_0900_ai_ci

Če se velik uvoz ustavi zaradi prekoračitve časa, si phpMyAdmin zaradi privzeto vklopljene nastavitve v razdelku Delni uvoz zapomni, do kod je prišel, in po ponovni izbiri datoteke nadaljuje od tam. Zanesljivejša pa sta stisnjena datoteka ali SSH.

Po nalaganju podatkovne baze WordPress

Če si podatkovno bazo strani WordPress naložil v novo podatkovno bazo, v datoteki wp-config.php vrednosti DB_NAME, DB_USER in DB_PASSWORD prepiši na podatke nove podatkovne baze, $table_prefix pa naj se ujema s predpono naloženih tabel. Če se je spremenila tudi domena, stare naslove zamenjaj z ukazom wp search-replace, ne v datoteki SQL z urejevalnikom besedila. Celotno selitev opisuje članek o prenosu strani WordPress.

Uvoz datoteke CSV v tabelo

Podatke, shranjene iz preglednice (Excel, LibreOffice Calc, Google Preglednice), lahko v obliki CSV naložiš v obstoječo tabelo.

  1. Na seznamu na levi odpri tabelo, nato klikni zavihek Uvozi.
  2. Izberi datoteko CSV, Oblika naj bo CSV.
  3. Če prva vrstica datoteke vsebuje imena stolpcev, v polje Preskoči toliko poizvedb (za SQL) od prve dalje vpiši 1. Pri CSV to izpusti prve vrstice datoteke; če ostane 0, pride v tabelo tudi glava kot vrstica podatkov.
  4. Med Možnostmi, specifičnimi za obliko, je privzeta vrednost polja Stolpci ločeni z vejica (,). Excel s slovenskimi nastavitvami CSV shrani s podpičjem (;), takrat vpiši to v polje.
  5. Klikni gumb Uvozi.

Uvoz CSV v tabelo termekek v phpMyAdminu: preskok 1 vrstice, oblika CSV, Stolpci ločeni z: vejica

Vrstni red stolpcev CSV naj se ujema s stolpci tabele. Če se razlikuje ali je v datoteki manj stolpcev, v polju Imena stolpcev, ločeno z vejicami, naštej, kateri stolpec CSV pride v kateri stolpec tabele. Če preglednica ponudi, datoteko shrani v obliki „CSV UTF-8”, sicer se črke s strešicami prikažejo napačno.

Uvoz in izvoz prek SSH

Če tvoj paket vključuje dostop SSH (cP Premium, cP Pro, cP Pro 100), lahko varnostno kopijo SQL naložiš tudi z odjemalcem ukazne vrstice mysql (ali enakim mariadb). Ta nima omejitve 50 MB in se ne ustavi zaradi prekoračitve časa, zato je to prava pot za podatkovne baze z več sto megabajti. Za prijavo potrebuješ ključ SSH, njegovo nastavitev prikazuje članek o ključu SSH.

  1. Varnostno kopijo s SFTP naloži v lastni imenik gostovanja, zunaj mape public_html, da je ne bo mogoče prenesti iz brskalnika.
  2. Prijavi se prek SSH in datoteko naloži z uporabnikom podatkovne baze. Geslo vnesi ob vprašanju Enter password:, tako ne pride v zgodovino ukazne vrstice:

    mysql -u felhasznalo_wp -p felhasznalo_wp < mentes.sql
    

    Stisnjeno varnostno kopijo lahko naložiš tudi brez razpakiranja:

    zcat mentes.sql.gz | mysql -u felhasznalo_wp -p felhasznalo_wp
    
  3. Če se ukaz vrne brez sporočila, je nalaganje uspelo. Ob napaki se odjemalec ustavi pri prvem napačnem stavku in izpiše kodo napake in številko vrstice, na primer ERROR 1062 (23000) at line 1: Duplicate entry '1' for key 'PRIMARY'.

Prvi felhasznalo_wp je uporabnik podatkovne baze, drugi ime podatkovne baze; v cPanelu se oba začneta z uporabniškim imenom gostovanja. Izvoziš lahko z ukazom mysqldump:

mysqldump -u felhasznalo_wp -p --single-transaction felhasznalo_wp | gzip > mentes.sql.gz

Stikalo --single-transaction pripravi varnostno kopijo tabel InnoDB brez zaklepanja, v enotnem stanju, zato spletna stran medtem deluje. Pri WordPressu ukaza wp db import in wp db export na gostovanju ne delujeta, ker so v PHP onemogočene funkcije, ki so za to potrebne; namesto njiju uporabi zgornje ukaze (WP-CLI na gostovanju cPanel).

Če bi rad uvažal s svojega računalnika z grafičnim programom (HeidiSQL, DBeaver, MySQL Workbench), moraš omogočiti oddaljeni dostop do podatkovne baze.

Pogoste napake uvoza

Sporočilo o napaki Kaj jo povzroča? Rešitev
#1044 - Access denied for user '…' to database '…' Na začetku varnostne kopije sta stavka CREATE DATABASE in USE z drugim imenom podatkovne baze, do katere račun nima pravic. Ti dve vrstici izbriši iz datoteke, v phpMyAdminu pa najprej izberi ciljno podatkovno bazo. Pri izvozu pusti stikalo Dodaj izjave CREATE DATABASE / USE izklopljeno.
#1273 - Unknown collation: 'utf8mb4_0900_ai_ci' Varnostna kopija je bila pripravljena v MySQL 8 in uporablja pravilo razvrščanja (collation), ki ga MariaDB 10.11 ne pozna. V datoteki povsod zamenjaj besedilo utf8mb4_0900_ai_ci z utf8mb4_unicode_ci.
#1227 - Access denied; you need (at least one of) the SUPER, SET USER privilege(s) for this operation Pogledi, prožilci ali shranjene procedure so navedeni v imenu drugega uporabnika, na primer DEFINER=`root`@`localhost`. Izbriši dele DEFINER=…; naloženi objekt bo takrat pripadal uporabniku, ki uvaža.
#1062 - Duplicate entry '…' for key 'PRIMARY' V tabeli že so vrstice z istim identifikatorjem. Uvozi v prazno podatkovno bazo ali pri izvozu vklopi možnost Dodaj izjave DROP TABLE / VIEW / PROCEDURE / FUNCTION / EVENT / TRIGGER.
Datoteka je prevelika ali se nalaganje prekine Varnostna kopija je večja od 50 MB ali njeno nalaganje traja predolgo. Stisni jo z gzip ali jo naloži prek SSH.

Prek SSH lahko prvi dve zamenjavi opraviš vsako z enim ukazom, izvirna datoteka ostane nespremenjena:

sed 's/utf8mb4_0900_ai_ci/utf8mb4_unicode_ci/g' mentes.sql > javitott.sql
sed -E 's/DEFINER=`[^`]+`@`[^`]+`//g' mentes.sql > javitott.sql

Popravljeno datoteko nato uvozi na običajen način.

Nazaj: cPanel – članki (48)