【rails aborted!】An error has occurred, all later migrations canceledになった時の対処方法


rails db:migrateをしたらエラー発生

テーブルを作ろうとrails db:migrateをしたら

というエラー文が出てしまいました。
検索してみるとこちらの記事を参考にさせていただき、解決することができました!

なぜエラーが発生したのか

それは文字コードの種類が適切ではなかったからです。デフォルトではutf8mb4という文字コードが設定されています。ですがutf8mb4は1文字4バイトで記述できる文字数が少なく、文字数がオーバーしてしまい、エラーが発生してしまいました。

結論・解決方法

文字コードをutf8mb4からutf8へ変更することで解決できました。
ただし、database.ymlファイルを修正するため、すでにマイグレーションされたファイルがある場合は注意が必要です。以下はマイグレーションされたファイルがすでにある場合の解決方法です。

1, データベースを削除する
一度作ったデータをコマンドで削除します。

% cd ~/projects/データベースを作り直したいディレクトリ
% rails db:drop

2, database.ymlを修正する
データベースを削除できたら、database.ymlを修正します。

database.yml
  .
  .
default: &default
  adapter: mysql2
  encoding: utf8 #元々がutf8mb4と記述されていた部分を修正する
  pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
  username: root
  .
  .

3, データベースを再度作成する
そして、rails db:createでデータベースを再度作成します。

% cd ~/projects/データベースを作り直したいディレクトリ
% rails db:create
% rails db:migrate

最後に

バージョンや作り方によっても解決できないこともあるかと思いますが
どなたかのお役に立てたら嬉しいです☺️
ご覧いただき、ありがとうございました。

参考記事

Mysql2::Error
utf8mb4で巻き起こったトラブル