你能帮我解决这个问题吗:
执行时
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
希望能有所帮助。