🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby on Rails 6

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

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

Q&A

解決済

1回答

672閲覧

heroku run rails db:migrateエラーについて

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby on Rails 6

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

Heroku

HerokuはHeroku社が開発と運営を行っているPaaSの名称です。RubyやNode.js、Python、そしてJVMベース(Java、Scala、Clojureなど)の複数のプログラミング言語をサポートしている。

0グッド

0クリップ

投稿2021/03/11 12:36

実現したい事

heroku run rails db:migrateが通るようにしたい

ターミナルのエラー文

Mysql2::Error: Duplicate column name 'card_id' /app/vendor/bundle/ruby/2.6.0/gems/mysql2-0.5.3/lib/mysql2/client.rb:131:in `_query' /app/vendor/bundle/ruby/2.6.0/gems/mysql2-0.5.3/lib/mysql2/client.rb:131:in `block in query' /app/vendor/bundle/ruby/2.6.0/gems/mysql2-0.5.3/lib/mysql2/client.rb:130:in `handle_interrupt' /app/vendor/bundle/ruby/2.6.0/gems/mysql2-0.5.3/lib/mysql2/client.rb:130:in `query' (省略) Caused by: ActiveRecord::StatementInvalid: Mysql2::Error: Duplicate column name 'card_id'

試した事

https://qiita.com/niyomong/items/22fa60657ea8ee478647
こちらの記事を参考にして

自身のマイグレーションファイルの

class AddCardIdToCategories < ActiveRecord::Migration[6.0] def change add_column :categories, :card_id, :integer end end

このコードのカラムを消して、
rails db:migrateを実行して、
その後元に戻して、

本題の

heroku run rails db:migrate

を実行してみましたが変わらずエラーが出てしまいます。

どなたか教えてくれますと幸いです。

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

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

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

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

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

winterboum

2021/03/11 22:36

heroku run rails db:migrate:status の結果を見せて
退会済みユーザー

退会済みユーザー

2021/03/11 23:22

ありがとうございます。 ``` up 20201214021829 Create cards up 20201229021731 Create categories up 20210102055955 Add ancestry to category down 20210105025455 Add card id to categories down 20210106020218 Add card id to cards down 20210219215115 Devise create users down 20210222054109 Add nickname to users ``` こちらになります、 downになっているのが原因がわかるのでうsがどのようにすればいいのか分からずです。。。
退会済みユーザー

退会済みユーザー

2021/03/11 23:32 編集

現在のマイグレーションファイルがこちらになります。 ``` class CreateCards < ActiveRecord::Migration[6.0] def change create_table :cards do |t| t.string :language t.text :title t.integer :price t.string :releasedate t.text :author t.text :memo t.integer :category_id t.timestamps end end end ``` ``` class CreateCategories < ActiveRecord::Migration[6.0] def change create_table :categories do |t| t.string :name t.integer :card_id t.timestamps end end end ``` ``` class AddCardIdToCategories < ActiveRecord::Migration[6.0] def change add_column :categories, :card_id, :integer end end ``` ``` class AddCardIdToCards < ActiveRecord::Migration[6.0] def change add_column :cards, :category_id, :integer end end ``` ### 仮説 class AddCardIdToCategories < ActiveRecord::Migration[6.0] def change add_column :categories, :card_id, :integer end end 上記のマイグレーションファイルが原因だと分かりましたがどのようにすればいいでしょうか?、、、
guest

回答1

0

ベストアンサー

CreateCategories に t.integer :card_id があるので AddCardIdToCategories 自体が不要です。
このmigrationを削除してください

localでエラーになっていないのは
推定
あとからCreateCategoriesにcard_idを追加してmigrateしても追加されなかったので、AddCardIdToCategoriesを作成した。

git log -p db/migrate/20201229021731_create_categories.rb を見ると多分痕跡が

投稿2021/03/11 23:46

編集2021/03/11 23:49
winterboum

総合スコア23567

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

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

退会済みユーザー

退会済みユーザー

2021/03/12 01:18

card_idとcategory_id二つが悪さをしていたので削除するとmigrationが通りました。 大変ありがとうござました!!!! しかし、これが原因だと思っていたエラーが解決できずです。もしよろしければお願いしてもよろしいでしょか??
winterboum

2021/03/12 06:14

解決できないエラーとは?
退会済みユーザー

退会済みユーザー

2021/03/12 09:12

開発環境では下記のコードのリンクをコードのリンクをクリックすると、dbに保存されているデータを読み込んで表示されていたのですが、 ``` フロントエンド %ul.sub %li = link_to "①HTML", card_category_path(:card_id ,1) %li = link_to "②CSS", card_category_path(:card_id, 2) %li = link_to "③Javascript", card_category_path(:card_id, 3) %li バックエンド %ul.sub %li = link_to "④Java", card_category_path(:card_id, 4) %li = link_to "⑤PHP", card_category_path(:card_id, 5) %li = link_to "⑥Python", card_category_path(:card_id, 6) %li = link_to "⑦Ruby", card_category_path(:card_id, 7) ``` 本番環境になると、 Couldn't find Category with 'id'=1 このようにエラーが生じてしまいます。そのためデータベースをみてみるとエラーから分かる通り、 DBに保存されていないのでエラーになっています。 しかし、ブラウザのトップページ上には、 ``` .Data__table - @cards.each do |card| #データを一つずつ取り出す .Data__table__list .Data__table__list__id = card.id .Data__table__list__title = link_to "#{card.title}", card_path(card.id) .Data__table__list__language = card.language .Data__table__list__btn = link_to "編集", edit_card_path(card.id) .Data__table__list__btn = link_to "削除", card_path(card.id), method: :delete ``` 表示されています。 試した事 調べていくと、clearDBがいるとの事だったので作成しました。 ``` CLEARDB_DATABASE_URL: mysql://b1efdbe635662e:1f628c49@us-cdbr-east-03.cleardb.com/heroku_d5538444ab636b5?reconnect=true ``` これまで行い突破口が開きません。。。
winterboum

2021/03/12 09:43

Couldn't find Category with 'id'=1 なのですから、Category のtableが空なのでは?
退会済みユーザー

退会済みユーザー

2021/03/12 11:10 編集

この画像はみれますでしょうか? https://gyazo.com/86a0e263a18ae20077bc173d6fd7a5f7 sequl Proのportfolio-testのデータベースのcategoryのテーブルには id 1~7まで存在し、 name HTML CSS など存在し、 card_idも1~7まで存在してます。 ちなみにこのカラム名のデータは手動で入れました、
退会済みユーザー

退会済みユーザー

2021/03/12 11:17 編集

カテゴリーコントローラーはこちらになります。 ``` class CategoriesController < ApplicationController def show @category = Category.find(params[:id]) @cards = Card.where(category_id: params[:id]).page(params[:page]).per(7) end end ``` カテゴリーのビューはこのようになっています。 ``` .Table .Table__title = "「#{@category.name}」の登録一覧" .Table__lists .Table__lists__list - @cards.each do |card| .Table__lists__list__title = link_to "#{card.title}", card_path(card.id) .Table__lists__list__btn = link_to "編集", edit_card_path(card.id) .Table__lists__list__btn = link_to "削除", card_path(card.id), method: :delete .Pagenation = paginate @cards .Return .Return__btn = link_to "トップページに戻る", root_path ```
winterboum

2021/03/14 03:46

「この画像はみれますでしょうか?」のデータベースの名前は何ですか? それはproductionのデータベースですか?
退会済みユーザー

退会済みユーザー

2021/03/14 04:39

portfolio_testになります。 productionのデータベースはどのようにして確認できますでしょうか?
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問