我使用Rails 3.12。另外,我使用PostgreSQL。 我會在我的遷移中更改我的字段的默認值。如何改變postgresql在移植軌道上的列?
change_column :tables, :field, :integer, :default => nil
change_column_default :tables, :field,nil
我測試這些說明,但沒有一個工作。
你能幫我嗎? 謝謝
我使用Rails 3.12。另外,我使用PostgreSQL。 我會在我的遷移中更改我的字段的默認值。如何改變postgresql在移植軌道上的列?
change_column :tables, :field, :integer, :default => nil
change_column_default :tables, :field,nil
我測試這些說明,但沒有一個工作。
你能幫我嗎? 謝謝
你的命令應該可以工作。我認爲第二個更可取。但是,它可能是,當你產生遷移,如:
rails g migration change_column_default :tables, :field, nil
它產生在你的migrate目錄遷移文件,db目錄裏面,但是如果你選擇了它產生的遷移文件是空的。我不知道爲什麼會發生這種情況。所以當你跑步時
rake db:migrate
沒有什麼實際做的。
我認爲你應該做的:
進入到生成的遷移文件在您migrate目錄,並添加:
change_column_default :tables, :field, nil
改變方法內。 然後運行rake db:migrate。 運行rails控制檯並測試一些數據。 注意:更改postgresql列的默認值不會影響現有行。它隻影響第5.5.5節中所述的未來插入。here
好的。謝謝你的澄清。 我也找到了改變表格的所有行的命令(例如User.update_all) – Djik
歡迎@Diik。你的意思是你找到了'User.update_all',或者你需要知道一個命令來改變表中的所有行嗎? – MattwalOlaide
您收到的錯誤消息是什麼? –