Cómo deshacer solo un paso con rake db: migrate

197

Después de agregar archivos de migración en la db/migratecarpeta y ejecutarlos rake db:migrate, quiero volver al paso anterior, creo que usar VERSION=nes la forma correcta de hacerlo, pero no sé el valor correcto de n para usar. ¿Hay algún comando para verificar el valor actual de n?

Sería genial si alguien pudiera proporcionar instrucciones completas sobre cómo usarlo rake db:migrate.

mko
fuente

Respuestas:

356

Para principiantes

rake db:rollback te llevará de vuelta un paso

luego

rake db:rollback STEP=n

Revertirá las nmigraciones, donde nes el número de migraciones recientes que desea revertir.

Más referencias aquí .

rwilliams
fuente
95

Retroceda la migración más reciente:

rake db:rollback

Retroceda las nmigraciones más recientes:

rake db:rollback STEP=n

Puede encontrar instrucciones completas sobre el uso de las tareas de migración de Rails para rake en la Guía de Rails para ejecutar migraciones .


Aquí hay más:

  • rake db:migrate - Ejecute todas las migraciones que aún no se han ejecutado
  • rake db:migrate VERSION=20080906120000 - Ejecute todas las migraciones necesarias (hacia arriba o hacia abajo) para llegar a la versión dada
  • rake db:migrate RAILS_ENV=test - Ejecutar migraciones en el entorno dado
  • rake db:migrate:redo - Retroceda una migración y ejecútela de nuevo
  • rake db:migrate:redo STEP=n- Retroceda las últimas nmigraciones y vuelva a ejecutarlas.
  • rake db:migrate:up VERSION=20080906120000- Ejecute el upmétodo para la migración dada
  • rake db:migrate:down VERSION=20080906120000- Ejecute el downmétodo para la migración dada

Y para responder a su pregunta acerca de dónde obtiene el número de versión de una migración:

La versión es el prefijo numérico en el nombre de archivo de la migración. Por ejemplo, para migrar a la versión 20080906120000, ejecute

$ rake db:migrate VERSION=20080906120000

(De Ejecutar migraciones en las guías de Rails)

Ajedi32
fuente
2
Cuando rake db: rollback no funcionaba para revertir la migración más reciente, tuve que usar rake db: migrate VERSION = <segunda fecha de la última versión> y funcionó bien
Omni
8

La mejor manera es ejecutar la migración particular de nuevo mediante el uso hacia abajo o hacia arriba (en rieles 4. Es cambio)

rails db: migrate: up VERSION = marca de tiempo

Ahora cómo obtienes la marca de tiempo. Ve a este camino

/ db / migrate

Identifique el archivo de migración que desea revertir. Seleccione la marca de tiempo de ese nombre de archivo.

Hemali
fuente
Si bien esto no responde a la pregunta, de hecho es la mejor manera. Retroceder por pasos puede causar errores, especialmente cuando se trabaja en software en un grupo.
acero
5

Si la versión es 20150616132425, entonces use:

rails db:migrate:down VERSION=20150616132425
Đoàn Nghĩa
fuente
1

Otras personas ya le respondieron cómo deshacer, pero también le preguntó cómo podría identificar el número de versión de una migración.

  • rake db:migrate:status da una lista de la versión de migraciones, nombre y estado (arriba o abajo)
  • También puede encontrar el archivo de migración, que contiene una marca de tiempo en el nombre del archivo, que es el número de versión. Las migraciones se encuentran en la carpeta:/db/migrate
BjarneD
fuente
Por cierto, si ejecuta el comando de estado, es posible que vea líneas como: ********** NO ARCHIVO ********** Esas migraciones no existen en su rama actual si usa git.
BjarneD