无法在postgres数据库上的heroku上运行迁移

时间:2013-03-04 14:25:36

标签: ruby-on-rails-3 postgresql heroku rails-migrations

我需要通过迁移将属性/列添加到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时没有显示任何错误。

任何想法或提示?

2 个答案:

答案 0 :(得分:2)

您似乎正在多次拨打heroku run

每次你执行heroku run时,它会使用您的最新代码旋转一个全新的dyno,当运行结束时,dyno会被销毁。所以第二次heroku运行没有在第一次创建的迁移字段。

由于您已熟悉psql,因此您可以直接使用ALTER TABLE。否则,您需要检查迁移到代码中,并git push heroku master将其迁移到heroku,然后运行它。

答案 1 :(得分:0)

为什么不下载代码,添加迁移并推送更改? 之后,只需在应用程序上运行heroku run rake db:migrate。