症状
DockerでRailsの環境構築後にDB:migrateをしようとしたとき、下記のエラーが発生しました。error
PG::DuplicateTable: ERROR: relation "users" already exists
マイグレーションファイルは以下を使用していました。
マイグレーションファイル
20210817024851_photos
20220817024851_users
20210817024851_photos
class CreatePhotos < ActiveRecord::Migration[6.0]
def change
create_table :fhotos do |t|
t.references :user, null: false, foreign_key: true
t.string :name, null: false
t.string :image
t.boolean :deleted,default:false
t.timestamps
end
end
end
20220817024851_users
class CreateUsers < ActiveRecord::Migration[6.0]
def change
create_table :fhotos do |t|
t.string :name, null: false
t.boolean :deleted,default:false
t.timestamps
end
end
end
解決策
userが先に読まれるように、マイグレーションファイルの名前をリネームして解決しました。エラーが出ていた理由としては、上から順にマイグレーションファイルが処理されていたため、userに依存しているphotoが先に読まれてしまい、userがないとエラーが出ていたようです。
solution
20200817024851_users
20210817024851_photos
参考