【Ruby on Rails】rails db:migrateコマンドを実行したとき、エラーメッセージ「you can’t redefine the primary key column ‘id’.」が表示されてしまう原因と解決策をお伝えします

Ruby on Rails

こんにちは。たいら(@tairaengineer2)です。
転職を繰り返し現在4社経験している、11年目エンジニアです。

この記事では、 Ruby on Railsでマイグレーションを実行する

のrailsコマンドを実行したとき

というエラーメッセージが表示されたときの原因と解決方法をお伝えします。

エラーが発生した原因

エラーメッセージ「you can’t redefine the primary key column ‘id’.」が発生してしまった原因は、マイグレーションファイルでidを指定していることです。

先ほどエラーを出したマイグレーションファイルは下記です。

なぜこれがダメなのか?と言いますと、idはマイグレーションファイルに記載がなくても必ず作成され、Active Recordモデルにおけるデフォルトの主キーだからです。
なのでマイグレーションファイルにidを記載する、ということはidというカラムを再定義するためエラーとなっていた、というわけです。

解決する方法

解決する方法は、

  • 「id」というカラム名を変更する
  • 「id」の記載を削除する

の2パターンです。
この記事では先ほど例にあげたマイグレーションファイルは、下記のようにidの記載を削除します。

上記の状態で

を実行するとマイグレーションを実行することができます!

まとめ:エラーが出ても落ち着いて、対処しよう

以上がRuby on Railsで

コマンドを実行したとき

というエラーメッセージが表示されたときの原因と解決策でした!

あなたのご参考になったのなら、とても嬉しいです(*´▽`*)
ではでは~(・ω・)ノシ

コメント

タイトルとURLをコピーしました