2017-04-04 3 views
-2

偶数という単語を正しく使用していない可能性がありますが、私のことを聞いてください。レールデータベース構造冪等?

Railsデータベースの移行で、データベースの列の順序を変更することは可能ですか? Railsの移行では、初期状態から移行しても、新しいマシンや何かを設定しているとすれば、データベースを最終的に期待される状態にすることができます。つまり、列を含む同じ状態注文?

EDIT:

この質問は少なく、私がやりたい何かをもとに、より変動の予測に基づいています。私は既存のアプリケーションを持っており、ホストマシン上にある列の順序が正確で、そのホストマシンが状態から状態に移行して順序が変わらない場合、別のユーザーセットアップがあるかどうかを予測したいと考えています。新鮮な機械の注文は変わるのですか?そのように思えます。

+1

「列の順序付け」とはどういう意味ですか?ディスク上のファイル内の列の物理的な順序?それは問題ですか? –

+2

なぜヘッダなしでデータダンプを行うのですか? (暗黙的な)列の順序は、うまくいかない傾向があります。異なる順序で移行が適用される場合(2つのブランチが同じテーブルに列を追加する場合など)、異なる環境で順序が異なる可能性があります。あなたは、明示的に列を希望の順序で一覧表示すること、または問題のクエリから列を読み取る方が良いでしょう。データをダンプする場合は、データに列名を含めます。 –

答えて

0

列の順序はデータベースに依存するため、列を並べ替えるためのRails移行ヘルパーはありません。ただし、データベースによっては、データベース固有のSQLを直接実行して列を並べ替えることができます。

この変更はschema.rbファイルに反映されていると思われます。これはデータベースの正規の状態を意図しており、アプリケーションの新しいインスタンスをブートストラップする必要がありますが、列の順序はRailsにとって重要ではないので、期待どおりに保持されているかもしれません。構造が正確に保持されていることを絶対に確認したい場合は、structure.sqlに切り替えてください。

EDIT:彼らはデータベースをブートストラップするために、まったく同じ手順を使用している場合はOPの編集に対処するために、列の順序は、同じデータベースおよびデータベースバージョンで同じ全体のユーザーである可能性が高い(例えばdb:migrate:resetdb:reset db:migrateは異なる結果をもたらす場合があります) 。 structure.sqlを使用する場合、両方のユーザーはdb:reset db:migrateを使用でき、同じ結果が得られるはずです。

しかし、データベース理論では、「テーブル内の列の順序」のようなものは論理演算に絶対的な影響を与えないため、行を「タプル」と呼ぶことに注意してください。確かに、特定の列の順序に依存するコードを記述しないでください。

関連する問題