run remove rails migrations delete column ruby-on-rails ruby migration

ruby on rails - remove - Rails: Cómo eliminar una migración pendiente



rollback migration rails (4)

Actualmente estoy siguiendo el tutorial de Ruby on Rails: http://guides.rubyonrails.org/getting_started.html .

Estoy tratando de guardar datos en la base de datos. Sin embargo, cuando ejecuto: rails server obtengo el siguiente error:

Migrations are pending. To resolve this issue, run: bin/rake db:migrate RAILS_ENV=development

He mirado los otros artículos y cuando corro:

bin/rake db:migrate

¡Tengo un rake aborted!

Despues de correr:

rake db:abort_if_pending_migrations....

Veo que:

You have 1 pending migration: 20150805200129 CreateDatabases SQLite3::SQLException: table "databases" already exists:

y simplemente me dice que ejecute rake db: migrate para comenzar de nuevo.

Parece que ya existe. ¿Hay alguna forma de cancelar la migración pendiente?


A veces, incluso descartar una base de datos de desarrollo local no es una buena idea. Hay mejores formas de eliminar / destruir una migración específica en su aplicación Rails.

Podría usar el comando rails d migration para destruir una migración en particular:

rails d migration MigrationName

Para deshacer los cambios correspondientes a una migración en particular, puede usar db:migrate:down método db:migrate:down como este:

rake db:migrate:down VERSION=XXX

A veces, las cosas pueden complicarse más y, en esas situaciones, otra cosa útil es echar un vistazo a la tabla schema_migrations en su base de datos, que contiene todas las migraciones con su version guardada en ella.

Puede eliminar una migración particular de esta tabla como esta:

delete from schema_migrations WHERE version = VERSION;

Si no quieres que la migración siga presente.


Es posible que la migración haya fallado a mitad de camino (por lo que creó la tabla, pero no terminó).

Solo está utilizando el entorno de desarrollo, por lo que está bien abandonar la base de datos y reconstruirla desde cero:

rake db:drop rake db:create rake db:migrate


Si desea revertir las migraciones incorrectas, puede eliminar toda la base de datos utilizando esto:

rake db:drop

Luego elimine el archivo de migraciones manualmente (esto no dañará la base de datos cuando se vuelva a crear, ya que las migraciones de esquema también se eliminarán).

Entonces corre

rake db:migrate

Y si hay datos para sembrar, entonces ejecuta esto también

rake db:setup


Si es como yo y mantiene su estructura de base de datos fuera de Rails, puede simplemente eliminar el archivo de migración de db / migration. Recibí el error en la pregunta del OP cuando usé el comando de generación de rieles para crear una clase de modelo, olvidando que también crea un archivo de migración.

¡No utilice este método si confía en Rails para mantener su estructura de base de datos!

Mantengo actualizado mi archivo de estructura de Rails a partir de la base de datos usando:

bundle exec rake db:structure:dump