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

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

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

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

Ruby on Rails 6

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

Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Ruby on Rails

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

Q&A

解決済

1回答

698閲覧

git reset --hard HEAD したらファイルは最新の状態に戻ったが、データベースでエラーが出る。

sanmi

総合スコア28

Ruby

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

Ruby on Rails 6

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

Git

Gitはオープンソースの分散バージョン管理システム(DVCS)です。

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Ruby on Rails

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

0グッド

0クリップ

投稿2020/02/21 12:46

エラーまでの経緯

  1. Team』という**'devise'作ったmodelと、それに紐づく『team_profile』と『team_blog』というmodel**があった。
class Team < ApplicationRecord acts_as_paranoid # Include default devise modules. Others available are: # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable devise :database_authenticatable, :registerable, :recoverable, :rememberable, :validatable, :confirmable, :lockable, :timeoutable, :trackable validates :name, uniqueness: true, length: { maximum: 50 }, presence: true has_many :team_blogs, dependent: :destroy has_one :team_profile, dependent: :destroy end
class TeamProfile < ApplicationRecord belongs_to :team mount_uploader :image, ImageUploader mount_uploader :background_image, BackgroundImageUploader end
class TeamBlog < ApplicationRecord validates :title, presence: true belongs_to :team, dependent: :destroy has_rich_text :content mount_uploader :thumbnail, ThumbnailUploader end

schema.rbはそれぞれ⬇︎のようになっています。

t.index ["team_id"], name: "index_team_profiles_on_team_id", unique: true t.index ["team_id"], name: "index_team_blogs_on_team_id"

2. teamモデルを削除した方が良い可能性が出てきたため、migrationファイルを作成し、下記のmigrationでteam_blogsとteam_profileからteamカラム とreference を削除、
あとteamテーブルをドロップしました。(gitで直前までcommitしてあるので、試しにやって戻せばいいと考えていました。)

remove_reference :team_profiles, :team, foreign_key: true remove_reference :team_blogs, :team, foreign_key: true

3.以上まで行い最後のコミット位置まで、下記のコマンドで戻すことにしました。

git reset --hard HEAD

無事にファイルは最新のコミットの状態に戻りました。


4.データベース のエラーが出る

その後rails sコマンドでサーバーをスタートして、localhost:3000にアクセスすると⬇︎のようなエラーが出ました

ActiveRecord::PendingMigrationError - Migrations are pending. To resolve this issue, run: rails db:migrate RAILS_ENV=development : Started POST "/__better_errors/bfcee0bf2ddce78c/variables" for ::1 at 2020-02-21 21:32:40 +0900

どうやらteamモデルが存在していないことになってるみたいです。(schema.rbを確認してもちゃんとteamsテーブルはありますし、team.rbファイルは存在しているのですが)
⬇︎rails console

irb(main):001:0> Team.all Traceback (most recent call last): 1: from (irb):1 ActiveRecord::StatementInvalid (PG::UndefinedTable: ERROR: relation "teams" does not exist) LINE 8: WHERE a.attrelid = '"teams"'::regclass ^

やったこと

rails db:reset

rails

1rails db:drop

などやってみましたが、下記のように返ってきます。

rails

1ActiveRecord::NoEnvironmentInSchemaError: 2 3Environment data not found in the schema. To resolve this issue, run: 4 5 rails db:environment:set RAILS_ENV=development 6 7/Users/USERNAME/workspace/APP_NAME/bin/rails:9:in `<top (required)>' 8/Users/USERNAME/workspace/APP_NAME/bin/spring:15:in `<top (required)>' 9bin/rails:3:in `load' 10bin/rails:3:in `<main>' 11Tasks: TOP => db:reset => db:drop => db:check_protected_environments 12(See full trace by running task with --trace)

解決策がわからないので、アドバイスいただければ幸いです。
よろしくお願いいたします。


Ruby: 2.6.3
rails: 6.0.0.1
potgresql: 12.1

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

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

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

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

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

winterboum

2020/02/22 12:47

rails db:migrate:status した結果を見せてください
sanmi

2020/02/24 03:07

質問への返答ありがとうございます。
sanmi

2020/02/24 03:07

以下がrails db:migrate:statusした結果になります。 Status Migration ID Migration Name -------------------------------------------------- up 20200212132544 Devise create users down 20200212132625 Devise create teams up 20200215065824 Add column to user up 20200215071016 Add index to user down 20200215072022 Add column to team down 20200215072107 Add index to team down 20200215072738 Rename username to users down 20200215073045 Rename teamname to teams down 20200215084022 Add deleted at users down 20200215084738 Add deleted at teams down 20200217044529 Create user profiles down 20200217044542 Create team profiles down 20200220095732 Create team blogs down 20200220100119 Add team ref to blogs down 20200220145534 Create active storage tablesactive storage down 20200220145535 Create action text tablesaction text
sanmi

2020/02/24 03:14

@hayato7さんのコマンドを入力したら、無事に解決いたしました! ありがとうございました! ちなみにコマンド入力後のrails db:migrate:statusの結果は下記のようになりました。
sanmi

2020/02/24 03:15

Status Migration ID Migration Name -------------------------------------------------- up 20200212132544 Devise create users up 20200212132625 Devise create teams up 20200215065824 Add column to user up 20200215071016 Add index to user up 20200215072022 Add column to team up 20200215072107 Add index to team up 20200215072738 Rename username to users up 20200215073045 Rename teamname to teams up 20200215084022 Add deleted at users up 20200215084738 Add deleted at teams up 20200217044529 Create user profiles up 20200217044542 Create team profiles up 20200220095732 Create team blogs up 20200220100119 Add team ref to blogs up 20200220145534 Create active storage tablesactive storage up 20200220145535 Create action text tablesaction text
guest

回答1

0

ベストアンサー

一つ気になったので、rails全然知らないのに回答しています。

エラーに以下を実行するよう表示されているのですが、試されたのでしょうか。(環境的に実行してはいけないコマンドであるのでしたら、すみません。)

rails db:environment:set RAILS_ENV=development

一般的には、マイグレーションで作ったものを消すには、新たにマイグレーションファイルを作成し、そこに削除するコードを書くか、ロールパックを行うかです。

投稿2020/02/21 13:24

編集2020/03/03 04:04
hayato7

総合スコア1135

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

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

sanmi

2020/02/24 03:11

提案いただいたコマンドを実行したら、解決しました! ありがとうございました!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問