Миграции находятся на рассмотрении; run 'bin/rake db: migrate RAILS_ENV = development' для решения этой проблемы [не удалось продолжить]
У меня, похоже, есть круглый вопрос в отношении процедуры миграции Ruby on Rails. Я следую статье введения, и я достиг точки, когда мне нужно создать свою первую таблицу.
Я выполнил следующее,
[[email protected] 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
Затем я продолжил миграцию,
[[email protected] working_ror]# rake db:migrate
== CreateHomepages: migrating ================================================
-- create_table(:homepages)
-> 0.0493s
== CreateHomepages: migrated (0.0494s) =======================================
однако, когда я запускаю свое приложение, я вижу следующее сообщение:
Migrations are pending; run 'bin/rake db:migrate RAILS_ENV=development' to resolve this issue.
но, если я запустил выше,
[[email protected] working_ror]# rake db:migrate RAILS_ENV=development
[[email protected] working_ror]#
и сообщение продолжается...
Я потратил немало времени на изучение форумов, в которых ближайший я мог найти, это сбросить и перестроить все, что сделало следующее.
rake db: drop
rake db: создать
rake db: migrate
и результаты одинаковы.
Ответы
Ответ 1
Вам нужно сделать
bundle exec rake test:prepare
или
bundle exec rake db:test:prepare
а затем
bundle exec rake db:migrate
перед запуском спецификаций
Приветствия
процитировано: Почему я попросил запустить rake db: migrate RAILS_ENV = test?
Ответ 2
вы можете сделать
bundle exec rake test:prepare
В Rails 4.1+ они устарели db: test: подготовить
Теперь вы можете просто использовать:
ActiveRecord::Migration.maintain_test_schema!
Если вам нужно сделать это вручную
rake db:schema:load RAILS_ENV=test
а затем
bundle exec rake db:migrate
Ответ 3
попробовать
В RAILS_ROOT/config/environment/development.rb Установите следующий параметр равным false:
config.active_record.migration_error = false #: page_load
Ответ 4
Один странный трюк, который вы можете использовать, когда ваши миграции закручены (файл удален, переименован вручную и т.д.)
- Запустите свой любимый инструмент администрирования DB (например, PGAdmin3) и перейдите к соответствующей базе данных.
- Найдите таблицу под названием
schema_migrations
и просмотрите ее содержимое. Он должен иметь один столбец под названием version
. Это поле используется Rails для проверки актуальности переходов.
- Убедитесь, что временные метки миграции соответствуют данным в этом столбце. Если вы удалили более старую миграцию, удалите соответствующую метку времени.
Ответ 5
Убедитесь, что таблица еще не существует:
- тип - рельсы dbconsole
- type -.tables(проверьте, была ли ошибка во время рейка db: migrate, у которой есть имя таблицы like - create_table (: test) rake aborted!)
- Если вы видите имя таблицы после запуска .tables в типе консоли -
drop table TABLENAME;
- Затем вернитесь к ветке и запустите команду rake db: migrate снова.
Ответ 6
вот что я сделал:
rails db:environment:set RAILS_ENV=test
Если вам нужно сделать это вручную
rake db:schema:load RAILS_ENV=test
а затем
bundle exec rake db:migrate
Спасибо Ахмеду Али....... ваш комментарий был полезен.