为什么我的ActiveRecord updated_at timstamp列默认为负无穷大?

时间:2016-10-24 19:37:15

标签: ruby-on-rails postgresql activerecord timestamp database-migration

我最近将我的数据库从Postgres迁移到MySQL,以及从Rails 2升级到Rails 5。

文档说明created_onupdated_on列的默认值应该是创建时的当前时间。出于某种原因,我的updated_on列现在默认为-Infinity,这使我的一些代码变得怪异。可能导致这种情况的原因是什么?

1 个答案:

答案 0 :(得分:2)

事实证明问题是由我用于将MySQL数据库迁移到Postgres的迁移工具引起的,称为NMIG。 NMIG不仅迁移数据,还迁移模式,即使您已经有一个设置,也无法阻止它覆盖模式。好吧,无论出于何种原因,它用于updated_on列的映射(也可能是updated_at列?)将默认值定义为-Infinity

为了解决这个问题,我通过使用新的数据库名称更新我的database.yml创建了一个新的PG数据库,运行db:createdb:schema:load然后使用pg_dump转储postgres数据,pg_restore -a只恢复数据,而不覆盖模式。田田! :)