質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

430閲覧

【Rails】データベース(シークエルプロ)で作ったテーブル自体を削除する方法を教えていただきたいです

study_matome

総合スコア37

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2022/05/23 13:37

質問したいこと

現在画像投稿アプリを作成しておりまして、
お気に入り機能を実装しています。

初めての機能だったので練習しようと思い、
本体のアプリの複製でデータベースを作成したところ、
本体のアプリにデータベースが作られてしまいました。

間違えて作ったデータベース(シークエルプロ)のテーブル自体を
削除する方法がありましたら教えていただきたいです。

試したことやエラーメッセージ

①間違えて作成してしまった直後の本体アプリを確認

rails

1 2 Status Migration ID Migration Name 3-------------------------------------------------- 4 up 20220518051644 Devise create users 5 up 20220519121235 Create active storage tablesactive storage 6 up 20220519122831 Create items 7 up 20220521105855 Create comments 8 up 20220523123107 ********** NO FILE ********** 9 down 20220523124842 Create favorites 10

② NO FILEを削除するため以下を実行

touch db/migrate/20220523123107_hoge.rb

ダミーファイルを作成

db/migrate/20220523123107_hoge.rb

1class Hoge < ActiveRecord::Migration[6.0] 2 def change 3 end 4end

rails

1 Status Migration ID Migration Name 2-------------------------------------------------- 3 up 20220518051644 Devise create users 4 up 20220519121235 Create active storage tablesactive storage 5 up 20220519122831 Create items 6 up 20220521105855 Create comments 7 up 20220523123107 Hoge 8 down 20220523124842 Create favorites

削除を実行

rm -rf db/migrate/20220523123107_hoge.rb

現状

NO FILEは消去することができました。

rails

1 up 20220518051644 Devise create users 2 up 20220519121235 Create active storage tablesactive storage 3 up 20220519122831 Create items 4 up 20220521105855 Create comments 5 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することができない状態でした。

スクリーンショット 2022-05-23 22.34.07.png

質問①
このような場合、シークエルのデータベース自体を消去することで
「rails db:migrate」し、正常通りにデータベースを作成することができるのでしょうか?

質問②
もしそうでしたら、削除方法を教えていただくことは可能でしょうか?

質問③
そうでない場合は、モデルを削除し、別なモデル名で行う方法もありますでしょうか?
他の方法がありましたら教えていただけると嬉しいです。

長文になってしまい申し訳ありませんが、
教えていただけますと、とても助かります。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

自己解決

他サイトにて以下のご回答をいただき、解決いたしました。

質問①

favorites テーブルを削除すれば Create favorites マイグレーションを適用できるはずです。(Create tables マイグレーションで favorites テーブルを作っているのであればの話ですが、名前から見てそうなっているだろうと思います。)

質問②

そのスクリーンショットで青くなっている favorites を右クリックして、「テーブルを削除」を選べば削除できます。

投稿2022/05/24 10:49

study_matome

総合スコア37

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.47%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問