2009-09-15 79 views
2

我正在使用rails 2.3.4我的主鍵發生了什麼?

當我執行rake db時:test:準備創建的id字段不是主鍵並自動遞增。

當我看到發展數據庫沒有主鍵的問題。

使用MySQL。

編輯:它看起來像我的schema.rb文件發生了改變:ID =>假的應該是真實的。什麼產生這個文件?數據庫遷移?

[編輯]什麼是產生schema.rb文件中的實際力學?

回答

1

當您執行rake任務時,如果未指定任何環境,則會將任務執行到默認環境。

您的測試和開發數據庫之間可能有不同的模式版本。

rake db:reset #drops and created the database for current environment 
rake db:reset:all #drops and creates database for all environments 
rake db:migrate #migrates the schema for the current environment 
rake db:migrate RAILS_ENV=test #migrates the schema for the test environment 

如果我沒有錯的(我記得現在)

rake db:migrate #applies the migrations and dumps the schema to db/schema.rb file 
rake db:schema:dump #dumps the actual state of your current environment schema into db/schema.rb file 
1

嘿,我看了一下這個問題,昨天,看到沒有人回答還沒有,所以我會盡力幫助,說實話,我不知道爲什麼正在發生主要是因爲我沒有真正使用的「準備」任務。當針對空數據庫運行遷移時,會創建schema.rb。

我正常運行分貝:測試:只要修改過該計劃克隆,這樣可確保您的測試數據庫始終處於在線與您的當前環境。也許嘗試刪除數據庫並從您的遷移中重新創建它,然後運行克隆。在這之後,模式仍然顯示:id => false?如果是這樣,你可以發佈正在創建相關表的遷移。

+0

但是當你需要Rspec它使用分貝:測試:準備。真正的問題是scema.rb如何改變? – Gutzofter 2009-09-16 17:00:22

+0

是的。那麼曾經好嗎?如果你回滾你的開發。數據庫到版本0,然後再次備份它在模式中設置的是什麼?它是否還有:id => false。這隻發生在一張桌子上還是全部? – tsdbrown 2009-09-16 20:15:02

+0

開發中沒有主鍵。我相信這是來自schema.rb。什麼產生一個新的schema.rb? – Gutzofter 2009-09-17 07:34:41

1

如果使用「重置」,然後「分貝:測試:準備」,你可能會得到的結果你」正在向前看。 像這樣:

rake db:reset 
rake db:test:prepare 

這將:

  • 重新根據您的最新遷移的開發數據庫
  • 重建基於遷移的/ dev數據庫上的schema.rb文件
  • 重建基於schema.rb文件測試數據庫。