2017-05-04 54 views
5

Rails 5.1.0引入了bigint主鍵和外鍵。Rails 5.1.0如何升級

所有新表都會有bigint pk,並且創建對舊錶的引用遷移將不起作用,因爲舊pk是正常的int。

使用change_column _, :id,:bigint只是一個外鍵的錯誤指向它,更不用說所有查找所有表的手工勞動和哪個鍵需要修改。

如何將我的生產數據庫遷移到我的所有表中以使用bigint pk和fk?

當然,因爲它的生產rails db:drop rails db:setup不是一個選項。

+0

在CHANGELOG我發現,只有主鍵成爲BIGINT。你能找到一個關於外鍵行爲改變的鏈接嗎? – Ilya

+0

我試着創建一個引用舊錶的表,它失敗了,因爲舊錶有一個小的int pk。更改從[5.1]到[5.0]的遷移使其工作,除了沒有bigint。所以它沒有說變化,但它影響到FK的。 –

回答

1

我面臨同樣的問題。臨時刪除fk應該工作。目標是將所有主鍵從int更改爲bigint。

你要做的是與所有的表和外鍵列 也許處理指數以同樣的方式,我不測試了

+0

謝謝是的,這可能會起作用,但我有很多表是否沒有辦法一次完成這一切?或者禁用bigint情況? –

+0

您可以使用所有主鍵自動執行該操作,但更大的問題是指向主鍵的外鍵列,可以自動執行該操作,但更難。 只需在所有表上修改一個循環,更改primary_key,還可以更改列中帶「_id」的列和整數作爲數據類型,這應該可以工作 –

+0

我有很多表,我可以去使用我的崇高文本技能並獲取所有內容但我不想做那麼多體力勞動來升級。打電話給我懶,但我覺得鐵軌應該引入一個策略來做到這一點。 –