Import a export databáze

Z Freenetis Wiki
Přejít na: navigace, hledání

Při vývoji je často potřeba pracovat s daty ostré databáze. Prázdná databáze po instalaci pro mnoho testování nestačí.

Import dat do databáze

Import SQL souboru s obsahem databáze je možné přes uživatelské rozhraní Phpmyadmina. Velké soubory pak ale často narazí na časový a datový limit PHP. Tyto limity je možné do jisté míry měnit v souboru

/etc/php5/apache2/php.ini

U velkých souborů toto nemusí stačit. Proto je snadné použití příkazové řádky. Stačí mít na počítači nekomprimovaný soubor SQL s daty k importu. Je potřeba mít na cílovém MySQL serveru prázdnou databázi. Pro import pak stačí v konzoli napsat

mysql -u username -p freenetis < freenetis.sql

Po importu databáze je nutné v Phpmyadminovi upravit některé položky v tabulce config. Jde o položky

  • protocol (na svém PC pro vývoj používáte typicky http místo https)
  • domain (na svém PC pro vývoj máte doménu localhost místo třeba freenetis.sdruzeni.net)
  • suffix (přípona za doménou, na serveru je to obvykle pouze /, pro localhost to je obvykle /freenetis/, záleží na vašem nastavení virtualhostu v Apachi)

Jestliže nenaběhne Freenetis na vaší lokální stránce (typicky localhost/freenetis) kvůli selhání upgradu databáze, pak navštivte v phpmyadminu tabulku config a upravte položku db_schema_version na číslo verze, které najdete v souboru application/upgrade_sql/upgrade_sql.php. Jestliže přihlašovací stránka naběhne, ale přihlášení selže na neznámé chybě, pak ověřte, jestli se celý import dat provedl správně. V případě větší databáze se import nemusí provést správně a některé tabulky se nestihnou vytvořit, například tabulka users klíčová pro přihlášení. V tomto případě používejte import výhradně přes příkazovou řádku a nikoli přes webové rozhraní phpmyadmina.

Tip

Po importu pusťte v phpmyadminovi následující SQL dotaz

update users, (select password as newpass from users where login='vaslogin') u set password = u.newpass

Můžete tak snadněji testovat práva, protože takto všem uživatelům nastavíte vaše heslo podle vašeho loginu.

Tip

Výsledný SQL dotaz po importu databáze s produkčními daty na lokální vývojářský počítač:

update config set value = 'http' where name = 'protocol';
update config set value = 'localhost' where name = 'domain';
update config set value = '/freenetis/' where name = 'suffix';
update users, (select password as newpass from users where login='vaslogin') u set password = u.newpass

Export dat z databáze

V příkazové řádce se pak export databáze do souboru provede obdobně:

mysqldump -u username -p freenetis --routines > freenetis.sql