Tengo el siguiente archivo de migración db\migrate\20100905201547_create_blocks.rb
¿Cómo puedo deshacer específicamente ese archivo de migración?
ruby-on-rails
schema
database-schema
rollback
Un aprendiz
fuente
fuente
Class.down
stackoverflow.com/questions/753919/run-a-single-migration-fileRespuestas:
Es una forma de hacerlo, si la migración que desea revertir es la última aplicada. Puede sustituir 1 por la cantidad de migraciones que desee volver.
Por ejemplo:
También revertirá toda la migración que ocurrió más tarde (4, 3, 2 y también 1).
Para revertir todas las migraciones (e incluir) una migración de destino, use: (Este comando corregido se agregó DESPUÉS de todos los comentarios que señalan el error en la publicación original)
Para revertir SOLO UNA migración específica (FUERA DE PEDIDO) use:
Tenga en cuenta que esto NO revertirá las migraciones intercesoras, solo la listada. Si eso no es lo que pretendía, puede ejecutarlo de manera segura
rake db:migrate
y volverá a ejecutar solo ese, omitiendo cualquier otro que no haya sido revertido anteriormente.Y si alguna vez desea migrar una única migración fuera de servicio, también existe su inverso
db:migrate:up
:fuente
STEP=-1
. Lo hice una vez y se volvió loco, haciendo retroceder todo. ¡No está bien! Esto era Rails 4.2. Supongo que puede estar solucionado por ahora.revertirá el archivo específico.
Para encontrar la versión de todas las migraciones, puede usar este comando:
O, simplemente, el prefijo del nombre del archivo de la migración es la versión que necesita revertir.
Consulte la entrada de la guía Ruby on Rails sobre migraciones.
fuente
Para revertir la última migración, puede hacer:
Si desea revertir una migración específica con una versión, debe hacer lo siguiente:
Por ejemplo, si la versión es 20141201122027, hará:
para revertir esa migración específica.
fuente
Puede revertir su migración utilizando
rake db:rollback
diferentes opciones. La sintaxis será diferente según sus requisitos.Si desea deshacer solo la última migración, puede usar cualquiera
o
Si desea revertir el número de migraciones a la vez, simplemente pase un argumento:
donde
n
es el número de migraciones para revertir, contando desde la última migración.Si desea revertir a una migración específica, debe pasar la versión de la migración de la siguiente manera:
donde xxxxx es el número de versión de la migración.
fuente
rake db:migrate:down VERSION=your_migrations's_version_number_here
La versión es el prefijo numérico del nombre del archivo de la migración.
Cómo encontrar la versión :
Sus archivos de migración se almacenan en su
rails_root/db/migrate
directorio. Encuentre el archivo apropiado hasta el que desea revertir y copie el número de prefijo.por ejemplo
nombre del archivo:
20140208031131_create_roles.rb
entonces la versión es20140208031131
fuente
rake db:migrate:status
Revertir la última migración:
Revertir el último
n
número de migracionesRevertir una migración específica
fuente
Para revertir la última migración, puede hacer:
Si desea revertir una migración específica con una versión, debe hacer lo siguiente:
Si se llamó al archivo de migración que desea revertir
db/migrate/20141201122027_create_some_table.rb
, entonces la VERSIÓN para esa migración es20141201122027
, que es la marca de tiempo de cuándo se creó esa migración, y el comando para revertir esa migración sería:fuente
Si es una migración reversible y la última que se ha ejecutado, ejecute
rake db:rollback
. Y siempre puedes usar la versión. p.ejel archivo de migración es 20140716084539_create_customer_stats.rb, por lo que el comando de reversión será,
rake db:migrate:down VERSION=20140716084539
fuente
Para revertir todas las migraciones a una versión particular (por ejemplo
20181002222222
), use:(Tenga en cuenta que esto usa
db:migrate
, nodb:migrate:down
como en otras respuestas a esta pregunta).Suponiendo que la versión de migración especificada es anterior a la versión actual, esto revertirá todas las migraciones hasta, pero sin incluir, la versión especificada.
Por ejemplo, si
rake db:migrate:status
inicialmente muestra:Corriendo:
Resultará en:
Referencia: https://makandracards.com/makandra/845-migrate-or-revert-only-some-migrations
fuente
De la guía de rieles
Revertir migraciones anteriores
Puede usar la capacidad de Active Record para revertir las migraciones utilizando el
revert
método:El
revert
método también acepta un bloque de instrucciones para revertir. Esto podría ser útil para revertir partes seleccionadas de migraciones anteriores. Por ejemplo, imaginemos que CreateBlock está comprometido y luego se decide que sería mejor usar validaciones de registro activo, en lugar de la restricción CHECK, para verificar el código postal.La misma migración también podría haberse escrito sin usar revertir, pero esto habría implicado algunos pasos más: invertir el orden de create_table y reversible, reemplazar create_table por drop_table y finalmente reemplazar up por down y viceversa. Todo esto se soluciona mediante revertir.
fuente
Las migraciones cambian el estado de la base de datos con el comando
Podemos deshacer un solo paso de migración usando
Para volver al principio, podemos usar
Como puede adivinar, la sustitución de cualquier otro número por 0 migra a ese número de versión, donde los números de versión provienen de enumerar las migraciones secuencialmente
fuente
Bueno, en rails 5 es bastante fácil rake db: migrate: status o rails db: migrate: status
Se modificó para manejar ambos de la misma manera. Luego simplemente elija la versión que desea revertir y luego ejecute rake db: migrate VERSION = 2013424230423
Asegúrate de que la VERSIÓN sea mayúscula
Si tiene un problema con algún paso de la migración o está atascado en el medio, simplemente vaya al archivo de migración y comente las líneas que ya se migraron.
Espero que ayude
fuente
Si desea revertir y migrar puede ejecutar:
Eso es lo mismo que:
fuente