2010-12-04 10 views
150

Después de agregar archivos de migración en la carpeta db/migrate y ejecutar rake db:migrate, quiero volver al paso anterior, creo que usar VERSION=n es la manera correcta de hacerlo, pero no 't saber el valor correcto de n para usar. ¿Hay algún comando para verificar el valor n actual?Cómo deshacer un solo paso usando rake db: migrate

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

Respuesta

279

Para empezar

rake db:rollback lo puede poner al un paso

continuación

rake db:rollback STEP=n

¿Va a hacer retroceder n migraciones donde n es el número de migraciones recientes que desea restaurar.

Más referencias here.

71

deshacer la migración más reciente:

rake db:rollback 

retroceder el n migraciones más recientes:

rake db:rollback STEP=n 

Puede encontrar instrucciones completas sobre el uso de las tareas de migración rieles de rastrillo en el Rails Guide for running migrations .


Aquí hay más:

  • rake db:migrate - Ejecutar todas las migraciones que no se han ejecutado ya
  • rake db:migrate VERSION=20080906120000 - Ejecutar todas las migraciones necesarias (arriba o abajo) para llegar a la versión dada
  • rake db:migrate RAILS_ENV=test - Ejecutar migraciones en el entorno dado
  • rake db:migrate:redo - Retroceder una migración y ejecutarla nuevamente
  • rake db:migrate:redo STEP=n - Revertir los últimos n migraciones y ejecutar de nuevo
  • rake db:migrate:up VERSION=20080906120000 - Ejecutar el método up para la migración dada
  • rake db:migrate:down VERSION=20080906120000 - Ejecutar el método down para la migración dada

Y para responder a su pregunta sobre 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.Para ejemplo, para migrar a la versión 20080906120000 plazo

$ rake db:migrate VERSION=20080906120000 

(De Running Migrations en las Guías Rails)

+2

Cuando rake db: retrotracción no estaba trabajando para revertir la migración más reciente, tuve que usar rake db: migrate VERSION = y funcionó bien – Omni

7

Mejor manera se está ejecutando la migración de nuevo particular mediante el uso de abajo o hacia arriba (en los carriles 4. El cambio de Se)

carriles db: migrate: hasta VERSION = marca de hora

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

/db/migran

Identificar archivo de migración que desea revert.pick la marca de tiempo de ese nombre de archivo.

+0

Mientras esto no responde la pregunta, de hecho es la mejor manera. Retroceder pasos puede causar errores, especialmente cuando se trabaja en un programa de un grupo. – steel

1

Otras personas ya le han respondido cómo deshacer, pero también le preguntaron 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 las migraciones, el nombre y el estado (arriba o abajo)
  • Tu también puede encontrar el archivo de migración, que contiene una marca de tiempo en el nombre del archivo, es decir el número de versión. Las migraciones se encuentran en la carpeta: /db/migrate
+0

Por cierto, si ejecuta el comando de estado, puede ver líneas como: ********** SIN ARCHIVO ********** Esas migraciones no existen en su rama actual si usas git. –

Cuestiones relacionadas