Import a export databáze
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