run rails pending migrations issue are ruby-on-rails ruby

ruby-on-rails - issue - migrations are pending ruby on rails



Las migraciones están pendientes; ejecute ''bin/rake db: migre RAILS_ENV=desarrollo'' para resolver este problema (6)

Parece que tengo un problema circular con respecto al procedimiento de migración de Ruby on Rails. Estoy siguiendo el artículo de introducción y he llegado al punto en que necesito crear mi primera tabla.

He corrido lo siguiente,

[tims@web2 working_ror]# rails generate model Homepage first_name:string last_name:string email:string message:text invoke active_record create db/migrate/20131119203948_create_homepages.rb create app/models/homepage.rb invoke test_unit createtest /models/homepage_test.rb createtest /fixtures/homepages.yml

Luego procedí con la migración,

[tims@web2 working_ror]# rake db:migrate == CreateHomepages: migrating ================================================ -- create_table(:homepages) -> 0.0493s == CreateHomepages: migrated (0.0494s) =======================================

Sin embargo, cuando ejecuto mi aplicación veo el siguiente mensaje:

Migrations are pending; run ''bin/rake db:migrate RAILS_ENV=development'' to resolve this issue.

pero, si corro lo anterior,

[tims@web2 working_ror]# rake db:migrate RAILS_ENV=development [tims@web2 working_ror]#

y el mensaje continúa ...

He pasado una cantidad considerable de tiempo investigando foros en los que lo más cercano que pude encontrar fue dejar caer y reconstruir todo, que han hecho lo siguiente.

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

Y los resultados son los mismos.


Compruebe para asegurarse de que la tabla no existe ya:

  1. tipo - rieles dbconsole
  2. escriba - .tables (verifique si hubo un error durante el rake db: migrate que tiene el nombre de la tabla como - create_table (: test) rake aborted!)
  3. Si ve el nombre de la tabla después de ejecutar .tables en el tipo de consola, drop table TABLENAME;
  4. Luego .quit para volver a la rama y ejecutar de nuevo el comando rake db: migrate.


Un truco extraño que puede usar cuando sus migraciones están bloqueadas (archivo eliminado, cambio de nombre manualmente, etc.)

  1. Inicie su herramienta de administración de DB favorita (por ejemplo, PGAdmin3) y busque la base de datos en cuestión.
  2. Busque una tabla llamada schema_migrations y examine su contenido. Debe tener una única columna llamada version . Rails utiliza este campo para verificar si las migraciones están actualizadas.
  3. Asegúrese de que sus marcas de tiempo de migración se correspondan con los datos en esta columna. Si ha eliminado una migración anterior, elimine la marca de tiempo correspondiente.

esto fue lo que hice

rails db:environment:set RAILS_ENV=test

Si necesitas hacerlo manualmente.

rake db:schema:load RAILS_ENV=test

y entonces

bundle exec rake db:migrate

Gracias a Ahmed Ali ....... tu comentario fue útil.


intente en RAILS_ROOT / config / environment / development.rb Establezca la siguiente configuración en false:

config.active_record.migration_error = false #: page_load


tu puedes hacer

bundle exec rake test:prepare

En Rails 4.1 y versiones posteriores, desaprobaron db: test: prepare. Ahora puedes simplemente usar:

ActiveRecord::Migration.maintain_test_schema!

Si necesitas hacerlo manualmente.

rake db:schema:load RAILS_ENV=test

y entonces

bundle exec rake db:migrate