我有一个充满数据的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
其他回答
根据你想要的,你可以使用…
rake db:创建
从config/database中从头构建数据库。yml,还是……
rake db:模式:负载
根据您的模式从头构建数据库。rb文件。
因为在开发过程中,您总是希望重新创建数据库,所以可以在lib/tasks文件夹中定义一个rake任务。
namespace :db do
task :all => [:environment, :drop, :create, :migrate] do
end
end
在终端中运行
rake db:all
它将重新构建数据库
我知道两种方法:
这将重置你的数据库并重新加载你当前的模式:
rake db:reset db:migrate
这将破坏你的数据库,然后创建它,然后迁移你当前的模式:
rake db:drop db:create db:migrate
在这两种情况下,所有数据都会丢失。
使用像
rake db:drop db:create db:migrate db:seed
都在一行里。这更快,因为环境不会一次又一次地重新加载。
drop -删除数据库。
数据库:create -将创建数据库(主机/ Db /密码将从config/database.yml中获取)
Db:migrate -将从目录(Db /migration/.rb)*运行现有的迁移。
Db:seed -将在目录(Db /migration/seed.rb)中运行种子数据。
我通常喜欢:
rake db:reset
一下子做所有的事。
干杯!
我在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+