マイグレーションできない時、外部キー周りを見直してみる。
スキルアップのため、Railsを使って個人アプリを作っています。
今回はグループ事にタスクの進捗を管理するアプリなので、
タスクとグループ、ユーザーとグループでそれぞれを組ませます。
DB設計も決まったし、さあ、rails db:migrateだ!!!
と思ったら・・ターミナルにこんなエラーが。
よくよくみると、
tasksテーブルの'group_id'の型はbignit型になるはずだ、という事。
あれ、外部キーって、integer型かと思ってた。
違いは下記の通り。
・integer
→-2147483648から+2147483647までの整数。(格納サイズは4バイト)
・bignit
→-9223372036854775808から9223372036854775807までの整数。
(格納サイズは8バイト)
調べてみると、マイグレーションファイルのバージョン5.1以降では、
referenceで設定したカラムはinteger型にならず、bigniti型になるよ、という事。
つまり、元のgroupsテーブルのidはinteger型だが、
関連付けたtasksテーブルのgroup_idカラムをbignitにしちゃ型が合わないよ、
と言われてるようだ。
という事で下記の通りのマイグレーションファイルを作成。
7、8行目が今回修正を加えた部分です。
これでマイグレーションできました!