Doiya’s blog

日々の進捗を書く雑記ブログ(メインはエンジニアやプログラミング関連)

マイグレでいつもと違うエラーが起きたよ。 その2

ログ残しのため、記事を書いてます。

最初、schemaファイルのあるテーブルを消したいと思って マイグレーションファイルの中に以下のコマンドを打ちテーブルを消した。

class 〇〇< ActiveRecord::Migration[5.1]
  def change
    drop_table :〇〇 #消したいテーブル名
  end
end

これでスキーマファイルからケーブルが消えたけど

その後、マイグレのコマンドを打つと

〇〇テーブルがないよ

というエラーが連発した。

結構、このエラーを直すのに時間はかかったけど

原因

おそらく以下のようにテーブルを作成する前にadd_〇〇してしまったからだと思っています。

 class AddBoardImageToBoard < ActiveRecord::Migration[5.2]
  def change
    add_column :boards, :board_image, :string
  end
end

解決策

まずスキーマファイルにテーブルがあった状態に戻そうと git resetコマンドを使って元に戻した。 その後rails:db:resetのコマンドを打って そこから一からマイグレをやり直して解決しました。

今回の件で安易にスキーマファイルを消すと大変なことになると思い知らされました。

ちなみにrails db:resetとrails db:migration:resetの違いは 以下の記事にわかりやすく書いています。

jpdebug.com

参考

Railsでテーブルの削除 - Qiita

【Rails】 本番環境でのエラー(ActiveRecord::StatementInvalid (SQLite3::SQLException: no such table:inquiries) - Qiita