Come eseguire il rollback di un solo passaggio utilizzando rake db: migrate


197

Dopo aver aggiunto i file di migrazione nella db/migratecartella ed eseguito rake db:migrate, voglio tornare al passaggio precedente, penso che usare VERSION=nsia il modo giusto per farlo, ma non conosco il valore corretto di n da usare. Esiste un comando per controllare l'attuale valore n?

Sarebbe bello se qualcuno potesse fornire istruzioni complete su come usare rake db:migrate.

Risposte:


356

Per i principianti

rake db:rollback ti farà tornare indietro di un passo

poi

rake db:rollback STEP=n

Eseguirà il rollback delle nmigrazioni dov'è nil numero di migrazioni recenti che desideri ripristinare.

Più riferimenti qui .


95

Ripristina la migrazione più recente:

rake db:rollback

Ripristina le nmigrazioni più recenti:

rake db:rollback STEP=n

Puoi trovare le istruzioni complete sull'uso delle attività di migrazione di Rails per il rake nella Guida di Rails per l'esecuzione delle migrazioni .


Eccone alcuni di più:

  • rake db:migrate - Esegui tutte le migrazioni che non sono già state eseguite
  • rake db:migrate VERSION=20080906120000 - Esegui tutte le migrazioni necessarie (su o giù) per arrivare alla versione indicata
  • rake db:migrate RAILS_ENV=test - Esegui migrazioni in un determinato ambiente
  • rake db:migrate:redo - Ripristina una migrazione ed eseguila di nuovo
  • rake db:migrate:redo STEP=n- Ripristina le ultime nmigrazioni ed eseguile di nuovo
  • rake db:migrate:up VERSION=20080906120000- Esegue il upmetodo per la migrazione specificata
  • rake db:migrate:down VERSION=20080906120000- Esegue il downmetodo per la migrazione specificata

E per rispondere alla tua domanda su dove ottenere il numero di versione di una migrazione da:

La versione è il prefisso numerico sul nome file della migrazione. Ad esempio, per eseguire la migrazione alla versione 20080906120000

$ rake db:migrate VERSION=20080906120000

( Dall'esecuzione delle migrazioni nelle guide di Rails)


2
Quando rake db: il rollback non funzionava per il rollback della migrazione più recente, ho dovuto usare rake db: migrate VERSION = <seconda data dell'ultima versione> e ha funzionato bene
Omni,

8

Il modo migliore è eseguire nuovamente la migrazione particolare utilizzando down o up (nelle rotaie 4. È un cambiamento)

rotaie db: migrate: up VERSIONE = data / ora

Ora come ottieni il timestamp. Vai a questo percorso

/ Db / migrate

Identificare il file di migrazione che si desidera ripristinare. Selezionare il timestamp dal nome del file.


Anche se questo non risponde alla domanda, è davvero il modo migliore. Il rollback dei passaggi può causare errori, soprattutto quando si lavora su software in un gruppo.
acciaio

5

Se la versione è 20150616132425, quindi utilizzare:

rails db:migrate:down VERSION=20150616132425

1

Altre persone ti hanno già risposto su come eseguire il rollback, ma hai anche chiesto come identificare il numero di versione di una migrazione.

  • rake db:migrate:status fornisce un elenco di versioni, nome e stato delle migrazioni (su o giù)
  • Puoi anche trovare il file di migrazione, che contiene un timestamp nel nome del file, ovvero il numero di versione. Le migrazioni si trovano nella cartella:/db/migrate

A proposito, se esegui il comando status, potresti vedere righe come: ********** NO FILE ********** Quelle migrazioni non esistono sul tuo ramo corrente se usi idiota.
BjarneD,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.