Me gustaría eliminar / eliminar un archivo de migración. ¿Cómo haría yo para hacer eso? Sé que hay preguntas similares aquí, pero como actualización, ¿hay una mejor manera que hacer un script / destruir?
Además, ¿debo hacer una db:reset
o db:drop
si elimino / elimino una migración?
ruby-on-rails
ruby-on-rails-3
file-io
alvincrespo
fuente
fuente
self.down
método definido en su migración para "degradar" su base de datos.rake db:migrate:status
le mostrarán el ID del archivo que falta, que puede usar para recrearlo. Una vez que regrese, puede seguir los consejos de esta respuesta para la victoria.db:migrate:status
es un salvavidas!Otra forma de eliminar la migración:
Úselo antes de que
rake db:migrate
se ejecute porque los cambios en la base de datos permanecerán para siempre :) - o elimine los cambios manualmentefuente
Ejecute los siguientes comandos desde el directorio de inicio de la aplicación:
rake db:migrate:down VERSION="20140311142212"
(aquí la versión es la marca de tiempo precedida por rieles cuando se creó la migración. Esta acción revertirá los cambios en la base de datos debido a esta migración)Run "rails destroy migration migration_name"
(Migration_name es el que se eligió al crear la migración. Elimine " timestamp_ " del nombre de su archivo de migración para obtenerlo)fuente
rails d migration migration_name
También puede ejecutar una migración descendente como esta:
Consulte la guía de Ruby on Rails sobre migraciones para obtener más información.
fuente
Nosotros podemos usar,
Lo que eliminará la migración.
fuente
A veces me encontré borrando el archivo de migración y luego borrando la entrada correspondiente en la tabla schema_migrations de la base de datos. No es bonita, pero funciona.
fuente
Esto también funciona en Rails 5.
Si la migración fue la más reciente, puede eliminar las columnas de la base de datos que agregó la migración haciendo lo siguiente:
luego elimine el archivo de migración ejecutando:
fuente
Mira 4.1 Revertir
http://guides.rubyonrails.org/migrations.html
$ rake db: rollback
fuente
Ninguna de estas respuestas se ajusta al problema que tenía, ya que faltaba la migración que quería eliminar: había creado y ejecutado una migración en alguna otra rama, que luego se descartó. El problema es que cuando se ejecuta una migración, rails agrega la versión a una
schema_migrations
tabla en la base de datos. Entonces, incluso si no aparece en la estructura o esquema de su base de datos, rails lo busca. Puede revelar estas migraciones huérfanas ejecutando:rails db:migrate:status
Tenga en cuenta las versiones de las migraciones que faltan y diríjase a la consola de db:
rails dbconsole
Ahora elimine las versiones de la tabla de migración manualmente:
delete from schema_migrations where version='<version>';
Ahora deberías estar bien.
fuente
Acabo de tener este mismo problema:
Eso me lo arregló
fuente
Nota al margen: Comenzar en rieles 5.0.0
rake
se ha cambiado arails
Así que realice lo siguienterails db: migrate VERSION = 0
fuente