0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[Rails]my sqlのテーブルとmigrationファイルを削除した際に生じた不具合の解決手順

Last updated at Posted at 2020-11-09

【前提】
Rails 6.0.3.1
ruby 2.6.3

現在、オリジナルアプリの製作中。
その際に誤って作ってしまった。users_artistsというテーブルとマイグレーションファイルを削除しようとした際に生じたエラー内容についてまとめてみた。

ターミナル.
% rails db:rollback STEP=5

・migrationファイルを削除する為にターミナルにてrollbackを実行。

ターミナル.
% rails db:migrate:status

・確認の為、statusを上記コマンドにて確認したところ、一箇所だけ不具合を発見

ターミナル.
 Status   Migration ID    Migration Name
--------------------------------------------------
   up     000             ********** NO FILE **********
  down    20201014111144  Devise create users
  down    20201014111251  Devise create artists
  down    20201014121517  Create events
  down    20201020102544  Create bookmarks

↑一箇所だけstatusがupとなっており、ファイル名もなぜかNO FILEとして残ってしまった
Image from Gyazo
↑上記はその際に残ってしまったschemaファイルの内容
・versionの表示が消えた状態でdownにならず残ってしまっていた
本来、このファイル名にはMigrationIDがあるはず
がここでは”000”となってしまっている

【エラーの解決手順】
①statusをdownにする為にdb/migrate配下に新しく名前を”000_create_users_artists.rb”としてmigrationファイルを作成。
:point_right: 他のmigrationファイルの名前と同様とするためにcreateを名前の先頭に付与して以下のように記述しました。

000_create_users_artists.rb
class CreateUsersArtists < ActiveRecord::Migration[6.0]
  def change
    create_table :users_artists do |t|
      t.integer :user_id
      t.integer :artist_id

      t.timestamps
    end
  end
end

②もう一度、rails db:migrate:statusを実行。下記のようにターミナル上にてup部分のMigrationNameがCreate users artistsに変わっている事が確認出来ました。

ターミナル.
Status   Migration ID    Migration Name
--------------------------------------------------
   up     000             Create users artists
  down    20201014111144  Devise create users
  down    20201014111251  Devise create artists
  down    20201014121517  Create events
  down    20201020102544  Create bookmarks

③再度、statusをdownにするために下記のコマンドにてファイル名を指定して実行。

ターミナル.
% rails db:migrate:down VERSION=000_create_users_artists.rb

④再度、指定したファイルのstatusがdownになっているか確認をして不要である000_create_users_artists.rbのファイルを削除すればOK!!

ターミナル.
 Status   Migration ID    Migration Name
--------------------------------------------------
  down    000             Create users artists
  down    20201014111144  Devise create users
  down    20201014111251  Devise create artists
  down    20201014121517  Create events
  down    20201020102544  Create bookmarks

⑤最後にrails db:migrateを実行してテーブルを再度、作成し直して終了。

※まとめ※
schemaファイルに誤って残った記述内容と削除する為に作成したファイル名やカラム名の記述内容を同じにしないとうまくデータが消せなかったのでかなり苦戦しました:joy:苦戦した事でかなり勉強になり、自身の強みにもなったので内容をまとめて投稿してみました。誰かの参考になれば幸いです!!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?