我需要通过迁移将属性/列添加到Heroku.com(Rails应用程序)上的生产数据库(Postgre)中的表。 当我进行迁移时,它看起来没问题,但当我查看表中的列时,它还没有添加列!
我的开发db是sqlite3,生产db是postgre
我执行以下操作:
heroku run rails generate migration AddUtc_OffsetToEvents utc_offset:integer RAILS_ENV=production --app app-name-1111
然后它返回:
invoke active_record
create db/migrate/20130304070946_add_utc_offset_to_events.rb
然后我运行迁移
heroku run rake db:migrate RAILS_ENV=production --app app-name-1111
然后:
heroku restart
当我跑步时
heroku pg:psql HEROKU_POSTGRESQL_GRAY_URL --app app-name-1111
并检查表格的列:
\d+ events
它仍然没有utc_offset列,并且在执行前一个cmds时没有显示任何错误。
任何想法或提示?
答案 0 :(得分:2)
您似乎正在多次拨打heroku run
每次你执行heroku run
时,它会使用您的最新代码旋转一个全新的dyno,当运行结束时,dyno会被销毁。所以第二次heroku运行没有在第一次创建的迁移字段。
由于您已熟悉psql,因此您可以直接使用ALTER TABLE
。否则,您需要检查迁移到代码中,并git push heroku master
将其迁移到heroku,然后运行它。
答案 1 :(得分:0)
为什么不下载代码,添加迁移并推送更改? 之后,只需在应用程序上运行heroku run rake db:migrate。