Cómo revertir solo un paso usando rake db: migrar


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 forma correcta de hacerlo, pero no conozco el valor correcto de n para usar. Hay algún comando para comprobar el valor actual de n?

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

Author: Ajedi32, 2010-12-04

5 answers

Para empezar

rake db:rollback te devolverá un paso

Luego

rake db:rollback STEP=n

Le hará retroceder n migraciones donde n es el número de migraciones recientes que desea revertir.

Más referencias aquí.

 298
Author: rwilliams,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-07-22 15:58:19

Revertir la migración más reciente:

rake db:rollback

Revertir las migraciones n 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 algo más:

  • rake db:migrate - Ejecuta todas las migraciones que no se hayan ejecutado ya
  • rake db:migrate VERSION=20080906120000 - Ejecuta 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 - Revertir una migración y ejecutarla de nuevo
  • rake db:migrate:redo STEP=n - Revertir las últimas migraciones n y ejecutarlas de nuevo
  • rake db:migrate:up VERSION=20080906120000 - Ejecute el método up para la migración dada
  • rake db:migrate:down VERSION=20080906120000 - Ejecute el método down para la migración dada

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

La versión es el prefijo numérico de la migración fichero. Para ejemplo, para migrar a la versión 20080906120000 ejecute

$ rake db:migrate VERSION=20080906120000

(Desde Ejecutando Migraciones en las Guías Rails)

 77
Author: Ajedi32,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-14 16:53:39

La mejor manera es ejecutar una migración particular de nuevo usando hacia abajo o hacia arriba(en rails 4. Es el cambio)

Rails db: migrate: up VERSION = timestamp

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

/ db / migrate

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

 7
Author: Hemali,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-05-10 05:16:09

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

  • rake db:migrate:status proporciona una lista de sus migraciones versión, 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
 1
Author: Bjarne Dideriksen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-10-20 08:29:04

Si la versión es 20150616132425, entonces use:

rails db:migrate:down VERSION=20150616132425
 0
Author: Đoàn Nghĩa,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-25 04:56:16