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

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

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

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 7

Ruby on Rails 7は、2021年12月に正式リリースされました。Ruby on Railsのバージョン7であり、フロントエンド開発環境を大幅に刷新。Node.jsを用いない構成がデフォルトになっています。

Q&A

解決済

2回答

201閲覧

マイグレーションファイルを消したい。

Shota6260

総合スコア5

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails 7

Ruby on Rails 7は、2021年12月に正式リリースされました。Ruby on Railsのバージョン7であり、フロントエンド開発環境を大幅に刷新。Node.jsを用いない構成がデフォルトになっています。

2グッド

1クリップ

投稿2024/01/29 03:36

実現したいこと

Ruby on Railsにて投稿フォームの作成を試みています。
以下No Fileになっているマイグレーションファイルを書きなおすためにDownさせる前に削除してしまいました。20240126030511 を強制的に削除しようとしたのですが,消すことができず,対処法を教えていただきたいです。

発生している問題・分からないこと

以下No Fileになっているマイグレーションファイルを書きなおすため,Downさせる前に削除してしまいました。ロールバックやリセットをしたのですが,エラーが出てしまいます。

Status Migration ID Migration Name -------------------------------------------------- up 20210707021252 Create users up 20210707021454 Create profiles up 20210707041601 Create posts up 20210709035845 Create comments up 20240126030511 ********** NO FILE ********** up 20240126031533 ********** NO FILE ********** down 20240127055934 Create tags down 20240127060205 Create article tags

エラーメッセージ

error

1StandardError 2An error has occurred, this and all later migrations canceled: 3PG::DuplicateTable: ERROR: relation "tags" already exists 4Extracted source (around line #113): 5111 6112 7113 8114 9115 10116 11 12 13 start = Process.clock_gettime(Process::CLOCK_MONOTONIC) 14 result = exec_without_profiling(*args, &blk) 15 elapsed_time = SqlPatches.elapsed_time(start) 16 record = ::Rack::MiniProfiler.record_sql(args[0], elapsed_time) 17 result.instance_variable_set("@miniprofiler_sql_id", record) if result 18 19Rails.root: /app

該当のソースコード

https://qiita.com/Hayato_prolife/items/c88a3ac9e42cbd6b9cbe https://qiita.com/fujisaway/items/9de365585d8cdb14b

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

ロールバックした結果

# bin/rails db:rollback rails aborted! ActiveRecord::UnknownMigrationVersionError: No migration with version number 20240126031533. /app/bin/rails:5:in `<top (required)>' /app/bin/spring:10:in `block in <top (required)>' /app/bin/spring:7:in `<top (required)>' Tasks: TOP => db:rollback (See full trace by running task with --trace) root@d625ac317d4c:/app# exit exit

補足

特になし

shinoharat, aaaaaaaaaaaaaas👍を押しています

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

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

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

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

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

guest

回答2

0

ベストアンサー

消した2つの他はみな create だから、消したのもcreate かな?
もしそうであったなら、
どの table をcreateしたのか、はおぼえてますね?
でしたら
db/migrate/20240126030511_CreateHoo.rb
db/migrate/20240126031533_CreateBar.rb

をつくり、そこに

class Create < ActiveRecord::Migration[5.2] def change create_table :hoos do |t| end end

と、中身のないcreate_table を書いて、
db:migrate VERSION=20210709035845
すればOK。

create table ではなかったのなら、

def change end

と中身が空のを作る。
create table の場合もこの空のでVERSIONを戻すことはできますが、その後でtable作り直そうとすると「もう有るよ」エラーになってしまいます。

投稿2024/01/29 13:33

winterboum

総合スコア23358

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

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

Shota6260

2024/01/30 01:55

ありがとうございました!無事にマイグレーションファイルを消すことができました!
winterboum

2024/01/30 02:19

とわ言え、 私の方法は DBの作り直しができなくなってきたような開発がずっと進んだ時用かも。 今のステージなら shinoharat さんの方法の方が簡便かも
Shota6260

2024/01/30 05:34

なるほど!ありがとうございます。1度shinoharat さんの方法を試してみたのですが,エラーがでてしまい,winterboumさんの方法で再度試したらうまくいきました。今後臨機応変に使いわけてみます。
guest

0

ローカルの開発環境の話ですかね?
だとしたら、現在のデータベースを完全に削除して1から作り直すのが手っ取り早いと思います。
データは全て消えてしまいますので、必要なら事前にバックアップを取っておいてください。

# 現在の DB を削除 $ bin/rails db:drop # DB を再作成 & マイグレーションの実行 $ bin/rails db:create db:migrate

上記のコマンドで

  • up 20210707021252 Create users
  • up 20210707021454 Create profiles
  • up 20210707041601 Create posts
  • up 20210709035845 Create comments

が実行され、 Create comments の時点に戻せるはずです。

投稿2024/01/29 07:17

shinoharat

総合スコア1676

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

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

Shota6260

2024/01/30 01:56

回答ありがとうございます。 ベストアンサーは別の方を選ばせていただきましたが、こちらの回答も非常に参考になりました。 答えてくださりありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問