【エラー】SQLite3::SQLException: table "〇〇" already existsの解決法
はじめに
モデルを作成する際に、SQLite3::SQLException: table "〇〇" already exists
というエラーに遭遇したのでその対処法。
SQLite3::SQLException: table "〇〇" already existsの解決法
commentsモデルを作成するためにrails db:migrateを実行した時に下記のエラーに遭遇しました。
#一部抜粋 SQLite3::SQLException: table "comments" already exists
エラーに書いてある通り、'commentsテーブルがすでにあるよ!'ってことでしたが、エディタ上にはcommentsモデルがなかったので調べてみました。
するとこのエラーは、カラム名とかを間違えてモデルを作成したときに、rails destroy model ~
などでモデルを削除し、
再度rails g model ~
で修正したモデル名と同じモデル名で作成してmigrateしたときなどに出るようです。
つまり、データベース上にはテーブルが残ったままなのが原因です。
データベース上の該当テーブルを消す
まずrails dbconsole
でデータベースにアクセスします。
$ rails dbconsole ~~~~~~ ~~~~~~ ~~~~~~ sqlite>
すると'rails console'のときと同じような感じになります。
そこで該当のテーブルがあるか確認し、テーブルから削除します。
sqlite>.table posts comments schema_migrations sqlite> drop table comments
そして再度テーブルを確認。
sqlite>.table posts schema_migrations
該当のテーブルが削除されたのを確認したら、
command + d などでターミナル画面に戻って、再度rails db:migrateを実行すると解決できます。