【Rails】データベース(シークエルプロ)で作ったテーブル自体を削除する方法を教えていただきたいです
質問したいこと
現在画像投稿アプリを作成しておりまして、
お気に入り機能を実装しています。
初めての機能だったので練習しようと思い、
本体のアプリの複製でデータベースを作成したところ、
本体のアプリにデータベースが作られてしまいました。
間違えて作ったデータベース(シークエルプロ)のテーブル自体を
削除する方法がありましたら教えていただきたいです。
試したことやエラーメッセージ
①間違えて作成してしまった直後の本体アプリを確認
Status Migration ID Migration Name
--------------------------------------------------
up 20220518051644 Devise create users
up 20220519121235 Create active storage tablesactive storage
up 20220519122831 Create items
up 20220521105855 Create comments
up 20220523123107 ********** NO FILE **********
down 20220523124842 Create favorites
② NO FILEを削除するため以下を実行
touch db/migrate/20220523123107_hoge.rb
ダミーファイルを作成
class Hoge < ActiveRecord::Migration[6.0]
def change
end
end
Status Migration ID Migration Name
--------------------------------------------------
up 20220518051644 Devise create users
up 20220519121235 Create active storage tablesactive storage
up 20220519122831 Create items
up 20220521105855 Create comments
up 20220523123107 Hoge
down 20220523124842 Create favorites
削除を実行
rm -rf db/migrate/20220523123107_hoge.rb
現状
NO FILEは消去することができました。
up 20220518051644 Devise create users
up 20220519121235 Create active storage tablesactive storage
up 20220519122831 Create items
up 20220521105855 Create comments
down 20220523124842 Create favorites
しかしこの状態でマイグレーションファイルを「rails db:migrate」すると
以下のようなエラーが出てきてしまいました。
NO FILEは消去することができましたが、テーブルは作成済との内容でした。
rails aborted!
StandardError: An error has occurred, all later migrations canceled:
Index name 'index_favorites_on_user_id' on table 'favorites' already exists
/Users/admin/projects/little-artist/db/migrate/20220523124842_create_favorites.rb:3:in `change'
/Users/admin/projects/little-artist/bin/rails:9:in `<top (required)>'
/Users/admin/projects/little-artist/bin/spring:15:in `<top (required)>'
bin/rails:3:in `load'
bin/rails:3:in `<main>'
Caused by:
ArgumentError: Index name 'index_favorites_on_user_id' on table 'favorites' already exists
/Users/admin/projects/little-artist/db/migrate/20220523124842_create_favorites.rb:3:in `change'
/Users/admin/projects/little-artist/bin/rails:9:in `<top (required)>'
/Users/admin/projects/little-artist/bin/spring:15:in `<top (required)>'
bin/rails:3:in `load'
bin/rails:3:in `<main>'
Tasks: TOP => db:migrate
(See full trace by running task with --trace)
複製の方で作成したデータベースがシークエルPROに残ってしまい、
upすることができない状態でした。
質問①
このような場合、シークエルのデータベース自体を消去することで
「rails db:migrate」し、正常通りにデータベースを作成することができるのでしょうか?
質問②
もしそうでしたら、削除方法を教えていただくことは可能でしょうか?
質問③
そうでない場合は、モデルを削除し、別なモデル名で行う方法もありますでしょうか?
他の方法がありましたら教えていただけると嬉しいです。
長文になってしまい申し訳ありませんが、
教えていただけますと、とても助かります。