當我創建表用戶時,生成的表有一個名爲id的列,定義爲一個整數。RAILS:DB MIGRATION:將id列重置爲auto_increment
我試圖修改它以BIGINT,無符號如下:
change_column :users, :id, :integer, :limit => 8, :unsigned => true
哪件事改變爲bigint,但它不再是一個自動增量列(儘管它仍然確定爲主要指標,並且還沒有設置爲無符號(即使軌告訴我,遷移執行罰款)
話,我想這樣做:
change_column :users, :id, :integer, :limit => 8, :unsigned => true, :null => false, :auto_increment => true
Rails的說,遷移執行得很好,但沒有任何改變。
我可以嘗試像:
change_column :users, :id, :primary_index
但會把我的權利,我開始
我也可以嘗試「執行」的聲明與MySQL的代碼,但我想保留遷移文件「乾淨」。有沒有人遇到過這個問題?
另外,我還試圖在另一列設置默認爲NULL,在這裏研究它(和Google),但沒有成功。
編輯:
看起來好像是沒有辦法編輯列「ID」它是作爲創建表的一部分,通過一個普通的遷移創建後。唯一的方法是通過一個帶有MySQL語法的「execute」語句。
使用默認ID字段設置的問題,就在於它是一個整數值,設定爲簽署,這意味着我限於值高達2,147,483,647。 這可能看起來像一個非常大的數字,但我正在處理社交網絡數據,每天有數千萬條記錄(它們最終被歸檔,但我需要維護ID號)。 所以,我需要使它成爲一個bigint,無符號的,它給了我高達18,446,744,073,709,551,615(例如,推特Twitter提供它的推特ID爲bigint,無符號)。 – EastsideDeveloper
我明白,默認情況下,默認值是NULL,但在這種情況下,我不小心改變了它,並且想知道,在刪除列並重新創建它之後,如果有方法將默認值更改回null 。我已經嘗試過:default => false,但它會生成0而不是NULL。 – EastsideDeveloper
關於默認選項,我犯了一個意外錯誤。它現在得到糾正,你可以嘗試嗎? – Agis