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

Rispondi

Inserisci i tuoi dati qui sotto o clicca su un'icona per effettuare l'accesso:

Logo WordPress.com

Stai commentando usando il tuo account WordPress.com. Chiudi sessione / Modifica )

Foto Twitter

Stai commentando usando il tuo account Twitter. Chiudi sessione / Modifica )

Foto di Facebook

Stai commentando usando il tuo account Facebook. Chiudi sessione / Modifica )

Google+ photo

Stai commentando usando il tuo account Google+. Chiudi sessione / Modifica )

Connessione a %s...

%d blogger hanno fatto clic su Mi Piace per questo: