2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

rails db:resetした時にActiveRecord::MismatchedForeignKeyと出た際の解決法

Last updated at Posted at 2022-11-05

環境

  • Ruby3系
  • Rails7系
  • MySQL
    (SQLiteからMySQLにDBを変更しようとした際にエラーが発生した)

エラー内容

terminal
rails db:reset
と実行したら↓

ActiveRecord::MismatchedForeignKey:
↑エラーが発生した

解決法

terminal
rails db:migrate:reset

を実行すれば、ActiveRecord::MismatchedForeignKeyが出ずに正常に動作します✅

原因

rails db:resetは、

  1. 全テーブルdrop
  2. schema.rbを元にDBを作成

します。
なので、reference先が作られていないのに、任意のテーブルのreferenceカラムが先に作成されて、今回のエラーが発生します!

そして、、、

rails db:migrate:resetは、

  1. 全テーブルをdrop
  2. migrationファイルを元にDBを作成

なので、reference先のテーブルが先に作成されている限り、エラーは発生しません!
※ referenceカラムが先に作成されるmigrationファイルの順番の場合は、reference先のテーブルを先に読み込むことでエラーが発生しなくなります。

参考にさせていただいた記事

最後に

エラー解決記事が少なかったので執筆しました。
本記事が多くの悩める方に届くこと願っています🌱

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?