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

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

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

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

解決済

herokuサーバでのマイグレーションステータスを出力したい

20020822
20020822

総合スコア1

Ruby

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

2回答

0グッド

0クリップ

245閲覧

投稿2022/10/07 14:08

編集2022/10/07 14:10

前提

ここに質問の内容を詳しく書いてください。
(例)
Rubyでフリマアプリを作っています。
ターミナルで% heroku run rails db:migrate←こちらのコマンドを使いherokuサーバでのマイグレーションステータスを出力しようとしたところ以下のエラーメッセージが発生しました。

実現したいこと

  • herokuサーバでのマイグレーションステータスを出力したい

発生している問題・エラーメッセージ

Mysql2::Error: Table 'heroku_6ab0b7403418702.purchases' doesn't exist ・ログ省略 Caused by: ActiveRecord::StatementInvalid: Mysql2::Error: Table 'heroku_6ab0b7403418702.purchases' doesn't exist ・ログ省略 Caused by: Mysql2::Error: Table 'heroku_6ab0b7403418702.purchases' doesn't exist ・ログ省略 Caused by: Mysql2::Error: Cannot add foreign key constraint ・ログ省略

該当のソースコード

Ruby

1class CreatePurchases < ActiveRecord::Migration[6.0] 2 def change 3 create_table :purchases do |t| 4 t.references :item, foreign_key: true 5 t.references :user, foreign_key: true 6 7 t.timestamps 8 end 9 end 10end
% heroku run rails db:migrate:status Running rails db:migrate:status on ⬢ furima-37952... up, run.2880 (Free) database: heroku_6ab0b7403418702 Status Migration ID Migration Name -------------------------------------------------- D, [2022-10-07T14:03:20.419276 #4] DEBUG -- : (1.4ms) SELECT `schema_migrations`.`version` FROM `schema_migrations` ORDER BY `schema_migrations`.`version` ASC up 20220904065018 Devise create users up 20220917102125 Create items up 20220917110923 Create active storage tablesactive storage down 20220927030354 Create addresses down 20220927030514 Create purchases
% rails db:migrate:status database: furima_37952_development Status Migration ID Migration Name -------------------------------------------------- up 20220904065018 Devise create users up 20220917102125 Create items up 20220917110923 Create active storage tablesactive storage up 20220927030354 Create addresses up 20220927030514 Create purchases shinoharakaito@shinohaitonoAir furima-37952 %

試したこと

Mysql2::Error: Cannot add foreign key constraint
上記のエラーから、マイグレーションファイルのPurchasesに記載してあるforeign_key: trueが悪さをしているのではないか?と考えております。

補足情報(FW/ツールのバージョンなど)

migrate:status コマンドからローカルでは全てupでうまくいっているのに対し、heroku環境では2つdownという結果になっていることが正直、訳わからなく困っています。
すいませんが詳しい方、教えていただけると幸いです。

以下のような質問にはグッドを送りましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

グッドが多くついた質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

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

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

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

下記のような質問は推奨されていません。

  • 間違っている
  • 質問になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

適切な質問に修正を依頼しましょう。

winterboum

2022/10/08 00:47

Mysql2::Error: Cannot add foreign key constraint このエラーが出たときのエラーメッセージ全文を載せてください

回答2

0

自己解決

解決しました!
rails db:migrate:statusの実行結果から、マイグレーションファイルの実行順が「Create Addresses」→「Create Purchases」となっておりAddressesテーブルではPurchasesテーブルの外部キーを設定しており、先にPurchasesテーブルを用意していなかったので「そのようなテーブルはない」とエラーになってしまっていました。

投稿2022/10/08 05:12

20020822

総合スコア1

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

0

そもそもHerokuでMySQLって使えたんでしたっけ
すみません,igniteなどのアドオンを使えばできるようですね……

投稿2022/10/07 20:52

編集2022/10/07 20:54
yudukikun5120

総合スコア4

良いと思った回答にはグッドを送りましょう。
グッドが多くついた回答ほどページの上位に表示されるので、他の人が素晴らしい回答を見つけやすくなります。

下記のような回答は推奨されていません。

  • 間違っている回答
  • 質問の回答になっていない投稿
  • スパムや攻撃的な表現を用いた投稿

このような回答には修正を依頼しましょう。

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

ただいまの回答率
86.12%

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

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

質問する

関連した質問

同じタグがついた質問を見る

Ruby

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