【发布时间】:2013-01-19 20:13:23
【问题描述】:
我总是冒着搞砸我的开发数据库 (PostgreSQL) 并重建它的风险,但我想我会先问问是否有人有经验。
理想情况下,所有数据都将被截断为整数:(例如:5.7 将变为 5)或者它可能会将值舍入(5.7 变为 6)?或者它只是简单地取消或清零所有值并且数据丢失?我想最坏的结果是不可靠的数据(5.7 变成 23)。
这些类型的迁移是否有一般的经验法则?
class ChangeBookFromDecimalToInteger < ActiveRecord::Migration
def self.up
change_column :book, :price, :integer
end
def self.down
change_column :book, :price, :decimal
end
end
【问题讨论】:
-
这里附带的一点是,您很幸运地使用了一个数据库,其中除了创建/删除数据库和创建/删除表空间和序列以及它们的功能之外的一切都是可交易的。因此,请尝试您在开发数据库上的事务中正在查看的内容,看看会发生什么。如果您不是 100% 满意,请回滚。请注意,现在是学习如何从 psql 命令界面驱动数据库的好时机,它非常强大且用户友好。
-
我可能会误解你...你是说从
psql命令行运行迁移可能比 Rails 迁移更有利吗?我认为这会很危险,因为团队中的其他用户无法轻松访问存储库中的相同迁移。或者你只是说使用命令行来“玩”迁移,直到找到你需要的东西,因为它们很容易回滚?!? -
你真的可以做一个或两个。但绝对要测试会发生什么等。例如,正如其他地方提到的,活动记录不理解 using 子句,因此如果您需要一个,您将手动迁移数据。
标签: ruby-on-rails postgresql migration