我有一个充满数据的Ruby on Rails开发数据库。我想删除所有东西,重建数据库。我正在考虑使用类似的东西:
rake db:recreate
这可能吗?
我有一个充满数据的Ruby on Rails开发数据库。我想删除所有东西,重建数据库。我正在考虑使用类似的东西:
rake db:recreate
这可能吗?
当前回答
更新:在Rails 5中,这个命令可以通过以下命令访问:
rails db:清除db:创建db:迁移RAILS_ENV=test
在最新的rails 4.2版本中,你现在可以运行:
rake db:purge
来源:提交
# desc "Empty the database from DATABASE_URL or config/database.yml for the current RAILS_ENV (use db:drop:all to drop all databases in the config). Without RAILS_ENV it defaults to purging the development and test databases."
task :purge => [:load_config] do
ActiveRecord::Tasks::DatabaseTasks.purge_current
end
它可以像上面提到的那样一起使用:
rake db:purge db:create db:migrate RAILS_ENV=test
其他回答
要删除一个特定的数据库,你可以在rails控制台中这样做:
$rails console
Loading development environment
1.9.3 > ActiveRecord::Migration.drop_table(:<table_name>)
1.9.3 > exit
然后再次迁移DB
$bundle exec rake db:migrate
我知道两种方法:
这将重置你的数据库并重新加载你当前的模式:
rake db:reset db:migrate
这将破坏你的数据库,然后创建它,然后迁移你当前的模式:
rake db:drop db:create db:migrate
在这两种情况下,所有数据都会丢失。
3个选项,结果相同:
1. 所有的步骤:
$ rake db:drop # deletes the database for the current env
$ rake db:create # creates the database for the current env
$ rake db:schema:load # loads the schema already generated from schema.rb / erases data
$ rake db:seed # seed with initial data
2. 重置:
$ rake db:reset # drop / schema:load / seed
3.迁移:重置:
$ rake db:migrate:reset # drop / create / migrate
$ rake db:seed
注:
如果使用schema:load比执行所有迁移都快,但结果相同。 所有数据都将丢失。 您可以在一行中运行多个耙。 使用rails 3。
我认为运行这个命令的最好方法是:
**rake db:reset** it does db:drop, db:setup
rake db:setup does db:create, db:schema:load, db:seed
我使用:
删除数据库。 Rails db:create根据config/database.yml创建数据库
以上命令可能替换为rails db:reset。
不要忘记运行rails db:migrate来运行迁移。