Automatická změna struktury databáze: Porovnání verzí

Z Freenetis Wiki
Přejít na: navigace, hledání
Řádek 2: Řádek 2:
  
 
To je řešeno následovně:
 
To je řešeno následovně:
#v adresáři kohana/application/upgrade_sql jsou soubory upgrade_sql_XXX.php, který obsahuje SQL dotazy pro update databázové struktury z SVN verze XXX na novější SVN verzi
+
#v adresáři '''kohana/application/upgrade_sql''' jsou soubory '''upgrade_sql_XXX.php''', který obsahuje SQL dotazy pro update databázové struktury z SVN verze XXX na novější SVN verzi
#ve stejném adresáři je soubor upgrade_sql.php, který má nastavenu SVN property [http://svnbook.red-bean.com/en/1.4/svn.advanced.props.special.keywords.html svn:keywords na hodnotu Revision].
+
#ve stejném adresáři je soubor '''upgrade_sql.php''', který má nastavenu SVN property [http://svnbook.red-bean.com/en/1.4/svn.advanced.props.special.keywords.html svn:keywords na hodnotu Revision].
 +
 
 +
 
 +
'''PHP autoupdate funkce'''
 +
 
 +
V nejnutnějších případech lze pro upgrade databáze použit i PHP (pokud nelze vykonat upgrade jen pomocí SQL).
 +
 
 +
Do souborů '''upgrade_sql_XXX.php''' / '''upgrade_sql.php''' lze přidat funkce  '''bool upgrade_sql_XXX_before(void)''', '''bool upgrade_sql_XXX_after(void)''' / '''bool upgrade_sql_before(void)''', '''bool upgrade_sql_after(void)'''.
 +
 
 +
Funkce '''before''' je volána před započetím vykonávání upgrade SQL scriptů, '''after''' po jejich provedení. Funkce musí vracet pravdivostní hodnotu.

Verze z 8. 2. 2011, 17:55

Protože při vývoji Freenetisu se neustále mění také struktura databáze, umí Freenetis po stažení nové verze z svn (příkaz "svn update") automaticky sám provést upgrade struktury databáze tak, aby původní obsah databáze zůstal nepoškozen.

To je řešeno následovně:

  1. v adresáři kohana/application/upgrade_sql jsou soubory upgrade_sql_XXX.php, který obsahuje SQL dotazy pro update databázové struktury z SVN verze XXX na novější SVN verzi
  2. ve stejném adresáři je soubor upgrade_sql.php, který má nastavenu SVN property svn:keywords na hodnotu Revision.


PHP autoupdate funkce

V nejnutnějších případech lze pro upgrade databáze použit i PHP (pokud nelze vykonat upgrade jen pomocí SQL).

Do souborů upgrade_sql_XXX.php / upgrade_sql.php lze přidat funkce bool upgrade_sql_XXX_before(void), bool upgrade_sql_XXX_after(void) / bool upgrade_sql_before(void), bool upgrade_sql_after(void).

Funkce before je volána před započetím vykonávání upgrade SQL scriptů, after po jejich provedení. Funkce musí vracet pravdivostní hodnotu.