【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を修正します。
.
.
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
最後に
バージョンや作り方によっても解決できないこともあるかと思いますが
どなたかのお役に立てたら嬉しいです☺️
ご覧いただき、ありがとうございました。
参考記事
Author And Source
この問題について(【rails aborted!】An error has occurred, all later migrations canceledになった時の対処方法), 我々は、より多くの情報をここで見つけました https://qiita.com/qp___04/items/52a9195f7140043454de著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .