为什么Rails要求我运行rake-db:migrate Rails_ENV=test一次又一次



你能帮我解决这个问题吗:

执行时

root@myproject-dev:~/projects/myproject-dev$ rake db:migrate:status
database: myproject-db
 Status   Migration ID    Migration Name
--------------------------------------------------
   (...)
   up     20151104094107  Add need to something
   up     20151111082356  ********** NO FILE **********
   up     20151113024714  Add approved something
   up     20151116075224  Add something
   up     20151130041605  Change column name
root@myproject-dev:~/projects/myproject-dev$ bundle exec rspec
RSpec is shutting down and will print the summary report... Interrupt again to force quit.
/home/xxx/.rvm/gems/ruby-2.1.2/gems/activerecord-4.1.6/lib/active_record/migration.rb:389:in `check_pending!':  (ActiveRecord::PendingMigrationError)
Migrations are pending. To resolve this issue, run:
        bin/rake db:migrate RAILS_ENV=test

状态显示一切正常,rake db:migrate RAILS_ENV=测试已经正确执行。如果我再次执行它,我会出现错误(当然)。

为什么Rails要求我一次又一次地运行rake-db:migrate Rails_ENV=test?

有3个以上的默认Rails环境:

  • 发展
  • 生产
  • 试验

它们中的每一个都应该有不同的设置,包括要操作的不同数据库。这样做是为了分离环境,防止在不合适的环境中运行时意外的数据损坏。

E。g.在test环境中,每次执行rake test都会清除数据库以防止副作用rspec会自动为您设置test环境。

因此,在您的情况下,您应该迁移测试数据库:

RAILS_ENV=test rake db:migrate:status
RAILS_ENV=test rake db:migrate

希望能有所帮助。

最新更新