2012-04-09 16 views
20

Questa domanda potrebbe sembrare stupida, ma non riesco a trovare alcuna istruzione su come ripristinare un'evoluzione in Play 2.0. Google trova solo le pagine che dicono che la sezione "Downs" di un file di evoluzione viene utilizzata per questo e basta. Qualsiasi suggerimento o istruzione sarà apprezzato.Rolling an evolution back

+0

Hai visto questo documento? http://www.playframework.org/documentation/2.0/Evolutions –

+5

Sì, l'ho letto, ma non dice una parola sul ripristino di un'evoluzione, usando la sezione 'Downs!'. Potrei mancare qualcosa, ma in realtà l'unico argomento un po 'remotamente rilevante viene toccato nell'ultimo paragrafo della nota, dove si dice "Nella modalità di sviluppo, tuttavia, è spesso più semplice cestinare semplicemente il database di sviluppo e riapplicare tutte le evoluzioni fin dall'inizio." . Per favore dimmi se ho torto. – noncom

risposta

19

La parte Downs viene utilizzata principalmente per ripristinare un'evoluzione quando lo script è cambiato. Cioè, hai un progetto con 2.sql applicato al database e quindi, a causa di un'unione, 2.sql viene modificato nella sorgente. La riproduzione verrà eseguita Downs sulla versione precedente e quindi Ups sul nuovo 2.sql per garantire che il database sia sincronizzato con il codebase.

Per quanto ne so non c'è modo di innescare Downs di per sé, in quanto lo scopo di un Evolution è quello di preparare il database per lavorare con il tuo codice, e l'applicazione di un solo Downs passo sarebbe lasciare l'applicazione in uno stato incoerente con molti potenziali errori derivanti.

Se è davvero necessario annullare qualcosa, sarebbe una nuova Evolution (3.sql) in cui Ups farebbe le modifiche richieste.

+2

Qual è lo scopo della sezione '# ---! Downs' nelle evoluzioni? – tuxdna