2017-05-04 6 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

ことをテストしていけません。外部キーの動作の変更に関するリンクを見つけてください。 – Ilya

+0

古いテーブルを参照しているテーブルを作成しようとしましたが、古いテーブルに小さいint pkがあるため失敗します。 [5.1]から[5.0]への移行を変更すると、bigintsを除いて動作しました。だから、それは変更を言っていないが、それはfkに影響を与える。 –

答えて

1

私は同じ問題に直面しています。一時的にfkが機能するはずです。目標はすべての主キーをintからbigintに変更することです。あなたはすべてのテーブルと外部キー列と は多分指標を同じように扱うことをしなければならない

、私は主キーのみがBIGINTになったことがわかっCHANGELOGで

+0

ありがとう、これはおそらく動作しますが、私はたくさんのテーブルを持っています。またはbigintの状況を無効にする? –

+0

すべての主キーでそれを自動化することができますが、大きな問題は主キーを指す外部キー列であり、それを自動化することは可能ですが、より困難です。 すべてのテーブルにループを作成し、primary_keyを変更し、 "_id"列を内部で、また整数をデータ型として変更してください。 –

+0

テーブルがたくさんあります。私はアップグレードのために多くの人手を必要としません。私は怠け者だと呼びますが、私はレールがこれを行うための戦略を導入すべきだったと感じています。 –

関連する問題