rails数据库结构幂等?

时间:2017-04-04 15:34:56

标签: ruby-on-rails database activerecord

可能没有正确使用幂等词......而是听我说。

Rails数据库迁移是否可以更改数据库中列的排序?我知道Rails迁移允许您将数据库升级到最终预期状态,因为您从初始状态迁移但是说您正在设置新机器或者其他东西 - 您是否期望拥有相同的状态包括列排序?

编辑:

这个问题不是基于我想要做的事情,而是基于预测变化。我有一个现有的应用程序,我想预测我的机器上是否有其他用户设置,如果它们具有我在主机上的精确列排序,并且如果该主机从状态迁移到订单不会改变。新机器的订购是否会改变?似乎就是这样。

1 个答案:

答案 0 :(得分:0)

列排序依赖于数据库,因此没有可用于重新排序列的Rails迁移帮助程序。但是,根据您的数据库,您可以直接执行特定于数据库的SQL以重新排序列。

我相信此更改将反映在您的schema.rb文件中 - 该文件旨在作为您数据库的规范状态,以及您的应用的哪些新实例应该从中引导 - 但我不会指望在它上面,因为列顺序对Rails无关紧要,因此可能会或可能不会像您期望的那样保留。如果您想完全确定您的结构是否完全保留,请切换到使用structure.sql

编辑:要解决OP的编辑问题,如果相同的数据库和数据库版本的用户使用完全相同的步骤来引导数据库(例如db:migrate:reset和{{1},则列排序可能相同可能产生不同的结果)。如果您使用db:reset db:migrate,则两位用户都应该能够使用structure.sql并获得相同的结果。

但是,请记住,数据库理论将行称为“元组”,因为诸如“表中列的顺序”之类的内容对逻辑操作完全没有影响。当然不要编写任何依赖于特定列顺序的代码。