重新运行Heroku上的所有数据库迁移(rake db:migrate:reset)

时间:2014-07-13 18:22:01

标签: ruby-on-rails heroku ruby-on-rails-4

在开发heroku应用程序时,在启动之前,我一直将迁移保存到2个文件(创建用户,创建帖子),而不是每次更改表的结构时添加新的迁移(可能是20次迭代)点)。数据库中还没有数据。

如何在Heroku上做rake db:migrate:reset的等效操作? Heroku不允许这样做。我以为我可以heroku pg:reset然后rake db:migrate,但这似乎不会重新运行旧的迁移。同样,Heroku的数据库中没有数据,因此可以删除它。

迁移:

  • 2014070781234_create_users_table 我在此添加了一列 移民。它已经在heroku上运行了。我怎么能这样重新运行呢 表格已更新?
  • 2014070789999_create_posts_table

1 个答案:

答案 0 :(得分:8)

您不应对已迁移的迁移文件进行更改。如果你看docs就说

In general, editing existing migrations is not a good idea. You will be creating extra work for yourself and your co-workers and cause major headaches if the existing version of the migration has already been run on production machines. Instead, you should write a new migration that performs the changes you require

您应该通过

创建一个新的迁移文件
rails g migration AddColumnNameToUsers column_name:type

这将生成一个迁移文件,如:

class AddColumnNameToUsers < ActiveRecord::Migration
  def change
    add_column :users, :column_name, :type
  end
end

然后你可以简单地运行 heroku run rake db:migrate

如果您仍想从heroku删除数据库,则需要执行以下操作:

heroku pg:reset DATABASE_URL --confirm nameofapp

然后 heroku运行rake db:migrate 。结帐详情heroku docs