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

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

ただいまの
回答率

90.21%

bundle exec rake db:migrate の動作について

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 609
退会済みユーザー

退会済みユーザー

docker 上の開発環境を構築するときに staging の MySQL のダンプファイルをもってきて

mysql < db/Dump20181001.sql
bundle exec rake db:migrate

みたいなコマンドをうっているのですが
bundle exec rake db:migrate
は何をしているんでしょうか

MySQL 自体は Rails 以外のシステムでも使われているため Rails に依存したものではないはずなので
ダンプファイルを流し込んだ時点でステージングと同じ状態になっている気がするのですが

実際これを実行しないと Rails から MySQL が使えるようにならないので
さらにその後 Rails のコマンドをうつことにどんな意味があるのでしょうか

追記:

bundle exec は調べてもよく理解できなかったのですが
rake db:migrate は
このコマンドを実行すると,Railsプロジェクトのdb/migrateディレクトリの中にあるスクリプトファイルに基づいてデータベースにテーブルを作成します.
とあるのですがダンプを流し込んだ時点でデータベースにテーブルができてる気がするのでなぜ必要なのかがわかりません

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

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

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

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • 退会済みユーザー

    退会済みユーザー

    2018/10/04 19:48 編集

    docker 環境の構築は社内の先輩に教えてもらった手順をなぞっていて
    理解できなかった MySQL 関連のコマンドのみ記載しています

    コマンド内容に関しては google でコマンドをいれて出てきた検索結果を適当にみただけで、どこのページに何がかかれてあったかは覚えてないです  ユニークな情報であればURLは記載するようにはしてますがだいたいどこのブログでも同じような内容なので参照の必要はないかなと思いメモしてませんでした 申し訳ありません

    キャンセル

  • dice142

    2018/10/04 19:54

    そのキーワードで検索して探すとか履歴とか遡ったりすればいずれは見つかるかなとは思うのですが、いかがでしょう? というのもダンプファイルを実行した後にmigrateしているのを私は見たことがないもので。

    キャンセル

  • 退会済みユーザー

    退会済みユーザー

    2018/10/04 19:59

    >ダンプファイルを実行した後にmigrateしているのを私は見たことがない  やはりそうなのですね…  ただ実際 migrate をしないとなぜか MySQL のアクセスに失敗するんんですがかなり固有の問題なのですね  調べてわかることはこちらできくようにしていたのですがシステも固有の問題なのであれば回答は得られないと思うのでリーダーにきいてみることにします  それだけわかるだけでも非常に助かりました  ありがとうございます

    キャンセル

回答 2

check解決した方法

0

ステージングからダンプして開発環境にインポートするのは数分かかるため、毎回行うのは手間である
動作チェックで特に最新のデータが必要でなければダンプファイルは古いまま使いまわして、
カラム追加等は頻繁に行われるため最新のスキーマを反映させるためにこまめにmigrateを行うということでした

普通はカラム追加等スキーマへの変更はそうそうあるものではないんでしょうか
自社の固有事情みたいなので申し訳ありません

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

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

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

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

一応回答しますが、個人的にメインは区切り線の下の方の内容。

bundle exec rake db:migrate
は何をしているんでしょうか

bundle execはプロジェクトのライブラリから実行するコマンドなので
「プロジェクトのライブラリにあるrakeコマンドでdb:migrateを実行している」
ということになります。

MySQL 自体は Rails 以外のシステムでも使われているため Rails に依存したものではないはずなので
ダンプファイルを流し込んだ時点でステージングと同じ状態になっている気がするのですが
実際これを実行しないと Rails から MySQL が使えるようにならないので
さらにその後 Rails のコマンドをうつことにどんな意味があるのでしょうか

この部分が全体的に謎で、特に

ダンプファイルを流し込んだ

これを行う意図がわからないというのと

Rails から MySQL が使えるようにならない

なぜ使えないと判断したのか、エラー等に関しての明記がないので
質問文を見た側としては「文章の意図がわからない」状態になります。

ダンプを流し込んだ時点でデータベースにテーブルができてる気がするのでなぜ必要なのかがわかりません

上記と被りますが、ダンプしたものをインポートする意図がわかりません。
migrationファイルがあるのでそちらでテーブル構成は復旧(というか構築)できますし
データの中身もということであればinsert文だけダンプファイルをmigrate後に使うべきです。


以下の内容は 質問するなという意図ではない ので誤解しないでください。
わからないことを調べて、調べたけど理解できなくて質問するというのは良いことです。
と前置きをしておきます。

質問者様の最近の質問から、質問者様の作業における状況は
運用的にイレギュラーなものかと思います。
加えて失礼ながらRailsに関して理解が浅いとお見受けしております。
(理解が深ければ質問せずに解決できる気がするので当たり前なのですが。)
そのため字面のみで質問回答が基本のteratailでは、質問者様の意図が
回答者に伝わりにくく、用語での齟齬が発生した場合に回答が正しく
質問者様に伝わらないことが考えられます。

イレギュラーな状況については字面のみで把握することは難しいので
対面でやりたいことについて画面を見ながらとか図に起こしてやりたいに対する理解を
すり合わせするとかで、解決に近づいていくのがベストな方法かと思います。

teratailでの回答者は質問者様と同じ状況にはありませんし、
解決しなければいけないという義務も責任もないので、
正しい解決策を提示できるとは限りません。

その点同じチームの方ですと、対面で話ができますし
解決しないと業務に関わりますのでより正しい解決策か
あるいは別の方法での解決に導いてくれるかと思います。
(チーム内の人が皆、質問したら怒るという性格なら何も言えませんが。。。)

イレギュラーな状況における質問が多いようでしたのでアドバイスとして
回答外のことを長々と書いてしまいましたが、改めて言いますと
調べて解決できなかったことを質問すること自体は良いことなので
そこは誤解なきよう捉えていただきますと幸いです。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

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

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

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/10/05 11:24

    >Railsに関して理解が浅い
    そのとおりでフレームワーク等に一切ふれていない上にrubyもさわったことがないのですがRailsをさわることになってしまいました
    チームの人にも質問すれば優しく答えていただけますが、いかんせん作業中頻繁にわからないことが出てくるので、できるだけプログラミングに関する一般的な問題については自分で調べてみてください、社内の固有事情であればどんどん質問してくださいといわれていて、知識不足のために一般的によくある話なのか社内の固有事情なのかも判断できない状況です
    なので解決策がでれば一番なのですが、それが外部の人には回答できない固有の問題なのかを判断する意味でもとりあえず質問してしまっているというのが現状です

    dice142さんの意見はイレギュラーかどうかが判断できない内容は最初に社内で聞いてから質問しろということみたいですが…

    ただ質問内容に関してはできるだけ固有事情にならないように1つの事柄にしぼって質問しているつもりです
    今回の場合も純粋にコマンドの挙動をきいているだけであって、ダンプを流し込んだ時点でMySQLは同じ状態になるためにマイグレーションをする必要はない と予想はできていたのですがその場合マイグレーションを行う意味がない という点が疑問であり 他の回答者さまも同じ疑問を抱かれるのであれば社内に持ち込んでこのマイグレーションは何のためにやっているんですかと質問することはできるのです

    基本的な内容を質問すれば調べろと言われるし、社内事情や質問意図を出せば社内で聞けと言われるし具体的に今回の場合どういう調べ方をしてどういう質問をするのがベストだったのでしょうか

    キャンセル

  • 2018/10/05 13:37

    > dice142さんの意見はイレギュラーかどうかが判断できない内容は最初に社内で聞いてから質問しろということみたいですが…
    いえ、イレギュラーか判断できるかはどうかは言ってなくて、
    私が見るに全体的にイレギュラーな用件だと思うので、社内で確認した方が良いのでは?という意見です。

    > 基本的な内容を質問すれば調べろと言われる
    調べてやってみてわからなければ、参考資料と自分の意見を取り入れて質問すると、回答側も把握しやすくなります。
    (今回はやってみるのはリスクがあるので仕方ないですが。)

    > 社内事情や質問意図を出せば社内で聞けと言われる
    命令形として伝わってしまったなら謝ります。すみません。
    社内事情を知らなかったので安易に勧めてしまいました。

    > 今回の場合どういう調べ方をしてどういう質問をするのがベストだったのでしょうか
    teratailでは回答者により考えた方は異なりますので、どれが正解かはわかりません。
    それぞれの意見を一参考としていただくのが最善かと思います。
    適格な回答でなくてすみません。

    キャンセル

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

  • ただいまの回答率 90.21%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

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