Jak řešíte synchronizaci změn ve struktuře databáze? rubrika: Databáze: SQL

4 chikeet
položil/-a 9.4.2015
 
upravil/-a 9.4.2015

Zdravím,
už delší dobu řeším následující problém: mám dvě databáze, testovací a produkční. V testovací db dělám ručně různé úpravy struktury. Pak je aplikuju i na produkční. Momentálně to dělám taky ručně - naklikám v admineru, zkopíruju vygenerovaný SQL dotaz, přidám do SQL souboru a ten pak při deployi spustím na produkční db. Je to dost nešikovné, zbytečně to žere čas, nemluvě o slušném potenciálu chyb z nepozornosti.

Existuje na tohle nějaké pěkné automatické řešení? Potřebuju něco, co bude všechny změny provedené ručně na testovací db (a pouze ručně, testovací data přidaná aplikací tam nechci) ukládat do souboru, který pak můžu v rámci deploye spustit. Primárně mě zajímá MySQL.

odkaz
4 diverman
odpověděl/-a 9.4.2015

Píšu konverzní skripty tak, aby byly idempotentní, tedy abych je mohl spouštět libovolně krát a pokaždé dostal stejný výstup. Takto je mohu odladit v podstatě k dokonalosti. Dá to více práce, ale chybovost se výrazně snížila.

Toho docílím operacemi jako CREATE TABLE IF NOT EXIST, CREATE OR REPLACE, INSERT IGNORE, REPLACE INTO.

Tam, kde databáze nenabízí konstrukci jsem si napsal uložené procedury: CALL DoSomethingIf( 'CONDITION', 'ACTION' ) apod.

Pro zobrazení všech 16 odpovědí se prosím přihlaste:

Rychlé přihlášení přes sociální sítě:

Nebo se přihlaste jménem a heslem:

Zadejte prosím svou e-mailovou adresu.
Zadejte své heslo.