事象
マイグレーションの移行のため、rails db:migrate
を実行すると、以下のエラーが発生。
StandardError (An error has occurred, this and all later migrations canceled:
PG::DuplicateTable: ERROR: relation "posts" already exists
):
データベースにposts
が既に存在しているというもの。
前回一度rails db:migrate
をしたが、一旦全てのアプリを削除し、今回は再作成している状況であったため、残っていたと想定。
解決方法
まずは、現状を以下で確認。
❯ rails db
前回作成したデータベースのposts
を削除するために以下を実行。
モードが切り替わり、post_bootstrap_app_development=#
となるため、以下を\d
を実行。
すると、以下のように、posts
の存在を確認。
List of relations
Schema | Name | Type | Owner
--------+----------------------+----------+----------
public | ar_internal_metadata | table | ユーザ名
public | posts | table | ユーザ名
public | posts_id_seq | sequence | ユーザ名
public | schema_migrations | table | ユーザ名
(4 rows)
このposts
を削除するため、以下を実行
drop table posts;
そして、\d
で確認すると、
List of relations
Schema | Name | Type | Owner
--------+----------------------+-------+----------
public | ar_internal_metadata | table | ユーザ名
public | schema_migrations | table | ユーザ名
(2 rows)
ちゃんと、post
が消えていることを確認。
そして、再度マイグレーションを実行。
❯ rails db:migrate
rails s
でサーバ起動し、正しい動作を確認できた。