标签: ruby-on-rails postgresql activerecord timestamp database-migration
我最近将我的数据库从Postgres迁移到MySQL,以及从Rails 2升级到Rails 5。
文档说明created_on和updated_on列的默认值应该是创建时的当前时间。出于某种原因,我的updated_on列现在默认为-Infinity,这使我的一些代码变得怪异。可能导致这种情况的原因是什么?
created_on
updated_on
-Infinity
答案 0 :(得分:2)
事实证明问题是由我用于将MySQL数据库迁移到Postgres的迁移工具引起的,称为NMIG。 NMIG不仅迁移数据,还迁移模式,即使您已经有一个设置,也无法阻止它覆盖模式。好吧,无论出于何种原因,它用于updated_on列的映射(也可能是updated_at列?)将默认值定义为-Infinity!
updated_at
为了解决这个问题,我通过使用新的数据库名称更新我的database.yml创建了一个新的PG数据库,运行db:create和db:schema:load然后使用pg_dump转储postgres数据,pg_restore -a只恢复数据,而不覆盖模式。田田! :)
db:create
db:schema:load
pg_restore -a