5

Rails 3.2.13 およびpostgres_ext gemの v0.3.1 で Ruby 2.0.0-p195 を使用します。

Rails を使用したスキーマ ダンプ (SQL 構造ダンプではない) で問題が発生することがよくあるようです。スキーマ ダンパーは、UUID 列をテキスト列に変換し、配列をテキスト列に変換します。デフォルトは"{}"です。などのルーチン操作rake db:schema:dumpは、次のような破壊的な差分を引き起こします。

-    t.string   "dbas",         :default => [],                 :array => true
-    t.string   "industries",   :default => [],                 :array => true
+    t.text     "dbas",         :default => "{}"
+    t.text     "industries",   :default => "{}"
-    t.uuid     "uuid"
+    t.text     "uuid"

DB の構造を手動で調べたり、Rails に特定の属性が持つと考えられる列の型を尋ねたりすると、すべて問題ないように見えます。

当然、この問題はあらゆる種類の混乱を引き起こします。SQL 構造ダンプに切り替える以外に、適切なスキーマ ダンプを取得するにはどうすればよいですか?

4

1 に答える 1

1

rake db:structure:dumpRails 3.2 では、Ruby バージョンではなく SQL バージョンのスキーマをダンプするために使用する必要があります。

Rails 4 はrake db:schema:dump、探しているものである を使用すると、より多くの型を処理します。

于 2013-05-24T22:51:03.877 に答える