2010-04-01 17 views
3

即使我從來沒有指定我的遷移,最初將列添加到表:null => false,鐵軌還在schema.rb指定的列具有:null => false生成代碼。爲什麼是這樣?如果我在我的箱子上開發,然後在我的生產箱上使用rake db:schema:load,我將會得到非常不同的行爲!爲什麼rails在schema.rb中的所有列上設置「:null => false」?

編輯:即使我刪除schema.rb並運行rake db:schema:dump,它仍會將:null => false放在新架構上,即使它沒有像實際數據庫中那樣定義。它似乎無法分辨列是否被標記爲允許空值。如果有幫助,我使用SQLite。

+0

什麼版本的Rails,這是什麼? – jdl 2010-04-01 20:41:40

+0

2.3.5與1.9.1 – ryeguy 2010-04-01 22:37:54

回答

2

我真的很討厭這件事很微妙,但問題是我使用的是sqlite3寶石,而不是sqlite3-ruby。只要我在environment.rb中更正它,一切都會更好。

0

恢復到紅寶石1.8.7奏效了我。

不知道爲什麼,雖然。

+0

出於好奇,這SQLite的LIB是你使用? – ryeguy 2010-04-01 22:48:51

+0

不知道這對你是否重要,但我修復了這個問題,看到我的答案。 – ryeguy 2010-04-02 03:41:24

+0

我會試試看,謝謝。 – kouak 2010-04-02 19:35:41

相關問題