我有一个充满数据的Ruby on Rails开发数据库。我想删除所有东西,重建数据库。我正在考虑使用类似的东西:
rake db:recreate
这可能吗?
我有一个充满数据的Ruby on Rails开发数据库。我想删除所有东西,重建数据库。我正在考虑使用类似的东西:
rake db:recreate
这可能吗?
当前回答
我在Terminal中使用了以下一行。
$ rake db:drop && rake db:create && rake db:migrate && rake db:schema:dump && rake db:test:prepare
我将其作为shell别名,并将其命名为remigrate
到现在为止,你可以很容易地“链接”Rails任务:
$ rake db:drop db:create db:migrate db:schema:dump db:test:prepare # db:test:prepare no longer available since Rails 4.1.0.rc1+
其他回答
从命令行运行
rake db:migrate:reset
在rails 4.2上,删除所有数据,但保留数据库
$ bin/rake db:purge && bin/rake db:schema:load
https://github.com/rails/rails/blob/4-2-stable/activerecord/CHANGELOG.md
只需发布以下步骤:删除数据库,然后重新创建它,迁移数据,如果有种子,则播种数据库:
rake db:drop db:create db:migrate db:seed
由于rake的默认环境是开发环境,如果您在spec测试中看到异常,您应该为测试环境重新创建db,如下所示:
RAILS_ENV=test rake db:drop db:create db:migrate
在大多数情况下,测试数据库在测试过程中被播种,因此db:seed任务操作不需要通过。否则,你必须准备数据库:
rake db:test:prepare
or
RAILS_ENV=test rake db:seed
此外,要使用重建任务,您可以添加到Rakefile以下代码:
namespace :db do
task :recreate => [ :drop, :create, :migrate ] do
if ENV[ 'RAILS_ENV' ] !~ /test|cucumber/
Rake::Task[ 'db:seed' ].invoke
end
end
end
然后问题:
rake db:recreate
你可以简单地跑
rake db:设置
如果你用一些数据创建了种子文件,它会删除数据库,创建新的数据库并从种子中填充db。
我认为运行这个命令的最好方法是:
**rake db:reset** it does db:drop, db:setup
rake db:setup does db:create, db:schema:load, db:seed