Questo è il processo che uso per il controllo delle versioni del database MySQL s sotto Subversion.
Setup SVN
In SVN creare una cartella Databases
con una sottocartella per ogni database che si desidera aggiungere a SVN.
Aggiungi tabella db_version ai database
avremo bisogno di aggiungere una tabella per ogni database quindi sappiamo quale versione del database attualmente stiamo lavorando con. Questa tabella fungerà anche da registro per tenere traccia delle modifiche dello schema apportate al database.
create table db_version (
`id` int auto_increment,
`majorReleaseNumber` int,
`minorReleaseNumber` int,
`pointReleaseNumber` int,
`scriptName` varchar(50),
`dateApplied` datetime,
PRIMARY KEY(`id`)
);
majorReleaseNumber - Le principali versioni sono significativi cambiamenti al database.
minorReleaseNumber - Le versioni secondarie sono miglioramenti al database che non richiedono una versione principale.
pointReleaseNumber - Un rilascio di punti è solitamente una soluzione di errore semplice.
scriptName - Il nome dello script sql che ha modificato lo schema.
dateApplied - Quando lo script è stato eseguito su questo database.
Creare script di base
ho usato mysqldump per generare uno script creare per i database esistenti. Assicurati di includere l'opzione --no-data. SVN viene utilizzato per tenere traccia degli script che apportano modifiche dello schema al database e non è destinato a essere utilizzato come strumento di backup per i dati di una particolare istanza dell'applicazione.
$ mysqldump -h localhost -u root -p db_1 --no-data > db_1.1.0.0.sql
Il nome dello script SQL deve contenere il nome del database e la versione del database lo script e 'applicato.
db_1.1.0.0.sql
Alla fine dello script essere sicuri di aggiungere un'istruzione INSERT per la tabella db_version.
Modifica schema di database
Quando si ha una maggiore minore, o il cambiamento, point release al database, lo script cambiamento dovrebbe essere testato e quindi caricato nella cartella di database in SVN. È consigliabile eseguire il backup del database prima di applicare uno script di modifica. Alla fine dello script di modifica dovrebbe essere un'istruzione di inserimento per la tabella db_version.
Un approccio alternativo sarebbe utilizzare l'opzione '--tab' per' mysqldump'. Questo crea un file ' .sql' per lo schema e un file' .txt' delimitato da tabulazioni per i dati. Lo schema viene ripristinato tramite 'mysql' come al solito, i dati vengono ripristinati tramite' mysqlimport'. http://dev.mysql.com/doc/refman/5.1/en/mysqldump-delimited-text.html –
rinogo