Symfony migrations e tabella migration_version

Se si utilizza Symfony e Doctrine si ha a disposizione la funzionalità di migrazione dello schema del database.
Nel caso in cui abbiate appena modificato il file schema.yml è possibile registrare le differenze tra lo schema appena modificato e il model attualmente in uso. Per fare questo eseguire il comando:

php symfony doctrine:generate-migrations-diff

Nella directory lib/migration/doctrine viene creato il file con le informazioni per lo “switch” tra la versione attuale del model e quello del nuovo schema (un file per ogni versione).
Per poter migrare all’ultima versione:

php symfony doctrine:migrate

Per poter migrare ad una versione precisa:

php symfony doctrine:migrate 25

Symfony per poter capire quale è la versione corrente dello schema, utilizza una tabella migration_version con un campo version.
Supponete di adottare questa funzionalità di migration dopo che il vostro sito e’ andato in produzione. Una esecuzione del comando doctrine:migrate comporta la ricreazione del database con tutte le tabelle. Per poter “agganciare” lo schema in produzione ad una precisa versione occorre creare la tabella migration_version e quindi inserire un record con il numero di versione. In questo caso di esempio il numero di versione definito è 24. Eseguire un doctrine:migrate 25 significa in questo caso apportare le sole modifiche allo schema relative al passaggio dalla versione 24 alla 25. Senza la tabella migration_version sarebbero stati eseguiti tutti gli step (dallo 0) fino ad arrivare alla versione 25.

CREATE TABLE IF NOT EXISTS `migration_version` (
  `version` int(11) default NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

INSERT INTO `migration_version` (`version`) VALUES
(24);
Annunci
%d blogger hanno fatto clic su Mi Piace per questo: