LoginSignup
0
0

More than 1 year has passed since last update.

【Rails】マイグレーション実行時にMysql2::Error: Duplicate entry for key..が出た

Last updated at Posted at 2021-05-04

Railsでテーブルのデータに対して一意性制約を付与するマイグレーションファイルを実行しようとした際に上記エラーが発生

class AddIndexToUserBooks < ActiveRecord::Migration[6.0]
  def change
    add_index :user_books, [:user_id, :book_id], unique: true
  end
end

マイグレーションの内容としては中間テーブルのデータの組み合わせに対して一意性制約を設けるもの。

原因と解決策

すでにテーブルに存在しているデータが一意性制約に反していた。
上記例でいれば、同じuserとbookの組み合わせがすでにテーブルに挿入されていることが原因で一意性制約を付与できない状態だった。
これをテーブルから直接削除して解決

所感

Duplicate entryはマイグレーション実行時には発生しないと思っていたので一瞬焦りました。
マイグレーションが実行される場合はすでにテーブルに存在しているデータとの整合性も判定されているということですね。

0
0
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
0
0