Jak řešíte synchronizaci změn ve struktuře databáze? rubrika: Databáze: SQL
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.
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:
Nebo se přihlaste jménem a heslem: