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

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

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

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

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Q&A

解決済

1回答

1369閲覧

本番環境と開発環境でDBのテーブル構成を同じにしたい

daiishi

総合スコア6

Ruby on Rails 5

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

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

0グッド

3クリップ

投稿2020/08/25 09:34

前提・実現したいこと

開発環境と本番環境でDBのテーブル構成がが異なってしまっていて、本番環境で rails db:migrate RAILS_ENV=production してもマイグレーションファイルの状態が反映されない状況です。
アプリの動作自体は開発環境と同じように動きます。

MySQLを使いターミナルでテーブル構成を確認した時の表示は下記のようになっています。

開発環境でのテーブル構成 +--------------------------------------+ | Tables_in_decideyourplan_development | +--------------------------------------+ | ar_internal_metadata | | places | | schema_migrations | | searches | | subplaces | | users | +--------------------------------------+ 本番環境でのテーブル構成 +-------------------------------------+ | Tables_in_decideYourPlan_production | +-------------------------------------+ | ar_internal_metadata | | places | | posts #この部分が違う | | schema_migrations | | searches | | subplaces | | users | +-------------------------------------+

開発環境でpostモデルが必要なくなったので、rails destroy model postで削除しました。
その際、NO FILEというファイルとしてマイグレーションファイルが残ってしまったので、touch db/migrate/20200116052507_hoge.rbを実行、statusをdownにする、当該マイグレーションファイルを削除の順で解消しました。
削除後この手順はあまりよろしくないことに気づきました。
この手順でpostモデルを削除した影響で、本番環境にpostsデーブルが残ってしまっているのでしょうか?
また、本番環境で直接MySQLを使いテーブルを削除しても問題ないでしょうか?
本番環境でデータベースを崩してしまうと直せる自信がないので先に質問させていただきました。

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

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

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

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

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

guest

回答1

0

ベストアンサー

この手順でpostモデルを削除した影響で、本番環境にpostsデーブルが残ってしまっているのでしょうか?

正確なことは、MySQLで見てください。それが一番確実です。

残っていたとして、

本番環境で直接MySQLを使いテーブルを削除しても問題ないでしょうか?

問題ないというのはどういう状態でしょうか。
仮に問題ないという回答があって、いざやってみて問題があったらどうしますか?
回答者を責めますか?そんなことはされないと思いますが、実際問題が起きて困るのは自分自身です。
なので、この手の問題は、ご自身で同等の環境を用意して削除して動作をみたりDBの状態などを見て、理解しながら自分の中での問題がないという状態を確認されるのが一番いいと思います。

というわけで、無責任に回答するつもりはないですが、本番環境レベルのことに対して断言するのは困難だと思います。
なので、自己判断でお願いしたいですが、postモデルも削除していて開発環境で一通りの動作が確認できているのであれば、理論上問題ないのではと思います。

どちらかというと、
db/migrate/20200116052507_hoge.rbの中身がどうなってるかわかりませんが、
次回別のマイグレーションに対してmigrateする時に、このマイグレーションファイルでエラーになるんじゃないかなと思ったりします。

もし仮に、個人開発をされていて本番環境が本番環境として運用されていないなど、データが消えてもいいなら、下記で回答した方法で、マイグレーションファイルとDBの状態をきれいにすることができると思います。
https://teratail.com/questions/277099#reply-394848

投稿2020/08/25 14:38

Cojiro

総合スコア539

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

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

daiishi

2020/08/26 07:13

質問の仕方に対するご指摘ありがとうございます。 事前の調査や表現方法など以後気をつけます。 ご提示いただいた、URLを参考にして RAILS_ENV=production DISABLE_DATABASE_ENVIRONMENT_CHECK=1 bundle exec rake db:drop rake db:create RAILS_ENV=production rake db:migrate RAILS_ENV=production を行って解決することができました。 ご回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問