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 構造ダンプに切り替える以外に、適切なスキーマ ダンプを取得するにはどうすればよいですか?