ruby-on-rails - create - ruby on rails database




清除或重新創建Ruby on Rails數據庫 (12)

使用像

rake db:drop db:create db:migrate db:seed

全部在一行中。 由於環境不會一次又一次地重新加載,所以速度更快。

db:drop - 將刪除數據庫。

db:create - 將創建數據庫(主機/ db /密碼將從config / database.yml中獲取)

db:migrate - 將從目錄(db / migration / .rb)*運行現有的遷移。

db:seed - 將從目錄(db / migration / seed.rb)運行種子數據。

我通常更喜歡:

rake db:reset

一次做所有事情。

乾杯!

我有一個開發Ruby on Rails數據庫的數據庫。 我想刪除所有內容並重建數據庫。 我正在考慮使用像這樣的東西:

rake db:recreate

這可能嗎?


取決於你想要什麼,你可以使用...

rake db:create

...從頭開始構建數據庫從config/database.yml ,或...

rake db:schema:load

...從您的schema.rb文件開始構建數據庫。


因為在開發過程中,你總是想重新創建數據庫,所以你可以在你的lib / tasks文件夾中定義一個rake任務。

  namespace :db do
      task :all => [:environment, :drop, :create, :migrate] do
   end 
end

在終端你會跑

rake db:all

它會重建你的數據庫


在Rails 4上,所有需要的是

$ rake db:schema:load

這將刪除數據庫中的全部內容,並從schema.rb文件重新創建模式,而無需逐個應用所有遷移。


從命令行運行

rake db:migrate:reset

您可以使用db:reset - 運行db:drop和db:setup或db:migrate:reset - 運行db:drop,db:create和db:migrate。

依賴於你想使用存在的schema.rb


您可以手動執行:

rake db:drop
rake db:create
rake db:migrate

或者只是rake db:reset ,它會運行上述步驟,但也會運行你的db/seeds.rb文件。

另外一個細微之處是rake db:reset直接從你的schema.rb文件中加載,而不是再次運行所有的遷移文件。

你的數據在所有情況下都會被吹走。


我今天對我的rails模式進行了一些修改。 我意識到我需要在層次結構中另外添加兩個模型,並刪除其他一些模型。 模型和控制器需要進行許多小改動。

我添加了兩個新模型並創建它們,使用:

rake db:migrate

然後我編輯了schema.rb文件。 我手動刪除了不再需要的舊模型,根據需要更改了外鍵字段,並將其重新排序以使其對我更清晰。 我刪除了所有的遷移,然後通過以下方式重新運行構建:

rake db:reset

它工作完美。 當然,所有的數據都需要重新加載。 Rails意識到遷移已被刪除並重置高水位標記:

-- assume_migrated_upto_version(20121026094813, ["/Users/sean/rails/f4/db/migrate"])

我知道兩種方法來做到這一點:

這將重置您的數據庫並重新加載當前的模式:

rake db:reset db:migrate

這會破壞你的數據庫,然後創建它,然後遷移你當前的模式:

rake db:drop db:create db:migrate

所有數據都將在兩種情況下丟失。


我認為運行這個命令的最好方法是:

**rake db:reset** it does db:drop, db:setup
 rake db:setup does db:create, db:schema:load, db:seed

根據Rails指南 ,應該使用這一個班輪,因為它將從schema.rb加載,而不是逐個重新加載遷移文件:

rake db:reset

要刪除特定的數據庫,可以在rails控制台上執行此操作:

$rails console
Loading development environment
1.9.3 > ActiveRecord::Migration.drop_table(:<table_name>)
1.9.3 > exit

然後再次遷移數據庫

$bundle exec rake db:migrate 






rake