5

将 Ruby 2.0.0-p195 与 Rails 3.2.13 和postgres_ext gem的 v0.3.1 一起使用。

似乎我经常在使用 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"

如果我手动检查数据库的结构,或者只是询问 Rails 它认为给定属性具有哪种列类型,一切看起来都很好。

自然,这个问题会造成各种破坏。如果没有切换到 SQL 结构转储,我如何才能获得正确的模式转储?

4

1 回答 1

1

在 Rails 3.2 中,您需要使用rake db:structure:dump转储模式的 SQL 版本而不是 Ruby 版本。

Rails 4 在使用时可以处理更多类型rake db:schema:dump,这正是您要寻找的。

于 2013-05-24T22:51:03.877 回答