在开发和生产中运行 Rails 4 和 Postgres 9.4。我有一个大表,随着时间的推移,它随着迁移而增长。由于表上有许多不同的列,我想重新排序,以便更逻辑地对列进行分组。换句话说,一些列元素根据它们捕获的信息自然地分组在一起。
我发现了关于使用的讨论after:
在迁移中重新排序列(使用ALTER TABLE
在 SQL 中),此时堆栈溢出讨论。然后我继续设置迁移来做到这一点。运行迁移后,我注意到我的 schema.rb 文件没有更改。查看数据库中的列(postgres ondevelopment),那里也没有任何变化。
进一步的研究使我发现Postgres 维基,其中指出目前不支持更改 Postgres 中的列位置。
这不是关键任务,但它会让生活变得更轻松。我的问题是:
如果我只是移动行schema.rb
向上或向下归档以便将它们放置在所需的位置,这会导致任何问题吗?由于我希望使用 rake db:schema:load 来配置任何新数据库,因此这似乎不会破坏任何内容。此外,由于以前的迁移没有发生重大变化(只是它们输出到 schema.rb 的列的顺序),所以一切都应该在内部一致,不是吗?
如果这是一个坏主意,我可以简单地返回到早期的迁移,添加语法after: :some_column
每个列元素以便他们正确设置 schema.rb 文件?
我的假设是,当我使用种子数据从头开始重建生产数据库时,它将使用架构结构以所需的顺序正确创建表。目前它还不是一个真正的、由最终用户部署的数据库,所以这似乎不是一个问题。使用上面的选项 #1 似乎是最简单的解决方案,只要它不破坏任何东西。
许多刚接触 postgresql 的人经常会问它是否支持更改
表中的列位置。目前还没有; 如果你想
更改列位置,您必须重新创建表,或添加
新列并移动数据。 允许对列重新排序的想法
postgresql 开发人员并不反对这一立场,而是更反对这一立场
没有人站出来做这项工作的情况。
ref
- 如果我只是移动行
schema.rb
向上或向下归档以便
根据需要放置它们,这会导致任何问题吗?
不。它对列顺序没有任何作用PG
.
- 如果这是一个坏主意,我可以简单地返回到早期的迁移,添加语法
after: :some_column
每个列元素以便他们正确设置 schema.rb 文件?
after: :some_column
如果您使用,选项对列顺序不起作用PG
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)