0
使用Rails 4,我添加了一個遷移,帶來我的架構的最高版本爲軌架構版本並不能反映最新的遷移
我決定,我不再需要這種遷移和恢復我所有的變化由取出並檢查背出主分支 -
,但我發現,運行rake db:reset; rake db:migrate
當schema.rb版本仍然設置爲我的不存在遷移,版本,與舊的(和不存在的)遷移仍在我的模式上生效。
我錯過了什麼?爲什麼舊遷移即使不存在,在db重置+遷移後仍然會產生影響?在模式號
$ rm -f db/schema.rb
$ be rake db:drop; be rake db:create;
$ ls db/migrate/
20141222203059_create_posts.rb
20141223152011_create_users.rb
20150121231334_create_api_keys.rb
20150121235406_drop_user_password_and_add_password_digest.rb
20150204032843_create_carts.rb
20150204032904_create_categories.rb
20150204033026_create_customers.rb
20150204033441_create_items.rb
20150204033614_create_sales.rb
20150204033708_create_shows.rb
20150204034028_create_venues.rb
$ be rake db:migrate
$ be rake db:migrate:status
database:
Status Migration ID Migration Name
--------------------------------------------------
up 20141222203059 Create posts
up 20141223152011 Create users
up 20150121231334 Create api keys
up 20150121235406 Drop user password and add password digest
up 20150204032843 Create carts
up 20150204032904 Create categories
up 20150204033026 Create customers
up 20150204033441 Create items
up 20150204033614 Create sales
up 20150204033708 Create shows
up 20150204034028 Create venues
up 20150207195208 ********** NO FILE **********
up 20150207200152 ********** NO FILE **********
up 20150207205305 ********** NO FILE **********
注的區別:
$ git diff db/schema.rb
-ActiveRecord::Schema.define(version: 20150204034028) do
+ActiveRecord::Schema.define(version: 20150207205305) do
更新/解決方案 我們能夠追蹤這回一個無效的database.yml,其中零是未來通過該數據庫名
我意識到這一點 - 我重置並運行遷移,我編輯我的問題,包括這一點。作爲遷移文件不再存在,它在一個單獨的分支, - 因爲我重置,這將下降並設置數據庫 - 然後我可以重新運行遷移。但不存在的遷移仍然生效 – lfender6445 2015-02-07 21:06:59
運行第二個'rake db:migrate'將不會執行任何操作,因爲'schema.rb'中的模式版本已經晚於最新的遷移文件'rake db:遷移只增加版本,它不能減少它。 – 2015-02-07 21:10:04
如果我重置並遷移,不應該我的模式有最新的遷移作爲版本號? – lfender6445 2015-02-07 21:11:45