我正在使用rails 2.3.4我的主鍵發生了什麼?
當我執行rake db時:test:準備創建的id字段不是主鍵並自動遞增。
當我看到發展數據庫沒有主鍵的問題。
使用MySQL。
編輯:它看起來像我的schema.rb文件發生了改變:ID =>假的應該是真實的。什麼產生這個文件?數據庫遷移?
[編輯]什麼是產生schema.rb文件中的實際力學?
我正在使用rails 2.3.4我的主鍵發生了什麼?
當我執行rake db時:test:準備創建的id字段不是主鍵並自動遞增。
當我看到發展數據庫沒有主鍵的問題。
使用MySQL。
編輯:它看起來像我的schema.rb文件發生了改變:ID =>假的應該是真實的。什麼產生這個文件?數據庫遷移?
[編輯]什麼是產生schema.rb文件中的實際力學?
當您執行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
嘿,我看了一下這個問題,昨天,看到沒有人回答還沒有,所以我會盡力幫助,說實話,我不知道爲什麼正在發生主要是因爲我沒有真正使用的「準備」任務。當針對空數據庫運行遷移時,會創建schema.rb。
我正常運行分貝:測試:只要修改過該計劃克隆,這樣可確保您的測試數據庫始終處於在線與您的當前環境。也許嘗試刪除數據庫並從您的遷移中重新創建它,然後運行克隆。在這之後,模式仍然顯示:id => false?如果是這樣,你可以發佈正在創建相關表的遷移。
如果使用「重置」,然後「分貝:測試:準備」,你可能會得到的結果你」正在向前看。 像這樣:
rake db:reset
rake db:test:prepare
這將:
但是當你需要Rspec它使用分貝:測試:準備。真正的問題是scema.rb如何改變? – Gutzofter 2009-09-16 17:00:22
是的。那麼曾經好嗎?如果你回滾你的開發。數據庫到版本0,然後再次備份它在模式中設置的是什麼?它是否還有:id => false。這隻發生在一張桌子上還是全部? – tsdbrown 2009-09-16 20:15:02
開發中沒有主鍵。我相信這是來自schema.rb。什麼產生一個新的schema.rb? – Gutzofter 2009-09-17 07:34:41