在开发heroku应用程序时,在启动之前,我一直将迁移保存到2个文件(创建用户,创建帖子),而不是每次更改表的结构时添加新的迁移(可能是20次迭代)点)。数据库中还没有数据。
如何在Heroku上做rake db:migrate:reset
的等效操作? Heroku不允许这样做。我以为我可以heroku pg:reset
然后rake db:migrate
,但这似乎不会重新运行旧的迁移。同样,Heroku的数据库中没有数据,因此可以删除它。
迁移:
答案 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