Eliminé accidentalmente mis dos últimos archivos de migración, ¿cómo revierto la migración dos pasos hacia atrás en Rails?

rake db: la reversión puede no funcionar si los archivos de migración se eliminan sin la reversión. Tiene que eliminar entradas del archivo de migración de esquema. Otra solución alternativa (si su migración no está organizada o en la rama de desarrollo en sí)

  1. dentro del directorio db / migration crea dos archivos vacíos manualmente con el mismo nombre y marca de tiempo del archivo de migración eliminado. Asumir 2018_file1.rb, 2018_file2.rb
  2. generar dos nuevas migraciones ficticias utilizando los mismos rails generate migration comando de rails generate migration que antes pero mantener diferente el nombre de la migración. Suponga 2018_file1temp.rb y 2018_file2temp.rb. Recuerde no migrar estos archivos
  3. Copie y pegue el contenido de los archivos temporales en sus respectivos archivos originales
  4. ahora destruya esas dos migraciones temporales que se generaron en el paso 2 usando rails destroy migration
  5. ahora db: rollback STEP = 2 debería revertir la migración eliminada.

Básicamente, si restauramos archivos manualmente, db: rollback debería funcionar bien.

Si.

rastrillo db: retroceso PASO = 2

$ rake db: rollback PASO = 2

O

Si conoce la marca de tiempo de la migración a la que desea revertir, el número de VERSIÓN es la marca de tiempo dentro del nombre de archivo de la migración a la que desea revertir:

$ rake db: migrate: down VERSION = 20100905201547

Depende de lo que estaba haciendo cada migración. En general, todas las migraciones se basan en marcas de tiempo y la marca de tiempo para cada una de ellas se guarda en la tabla schema_migrations. Puede generar una nueva migración que deshaga lo que haya hecho su migración anterior.

Una alternativa a la respuesta de Krystal Douglas es echar un vistazo al esquema creado por los otros archivos de migración (que todavía parecen existir) y escribir una nueva migración configurando ese estado.

Además aprende a usar git. Con esa herramienta, ya no tendrá que pensar en tales problemas, ya que cualquier archivo sería recuperable siempre que use git correctamente.

  1. use git para volver a un pago anterior, O
  2. usa la máquina del tiempo para regresar y poner tu trabajo bajo control de versiones