在Heroku Cedar堆栈上运行rake db:drop db:create db:migrate

时间:2011-11-17 05:11:20

标签: ruby-on-rails heroku rake cedar

当我尝试跑步时:

heroku run rake db:drop db:create db:migrate

我收到错误:

Running rake db:drop attached to terminal... up, run.5
Couldn't drop adsfsadfas : #<ActiveRecord::StatementInvalid: PGError: ERROR:  must be owner of database adsfsadfas
: DROP DATABASE IF EXISTS "adsfsadfas">

我在Heroku Cedar堆栈上。我可以在Heroku上删除数据库吗?

谢谢!

约翰

2 个答案:

答案 0 :(得分:49)

  

不支持rake db:reset任务。 Heroku应用程序无权删除和创建数据库。改为使用heroku pg:reset命令。

答案 1 :(得分:13)

heroku上不允许使用直接破坏性命令( drop create )。但是,如果您可以放弃所有数据,则可以使用pg:reset重置数据库。

heroku pg:reset DATABASE_URL

其他所有更改都应使用db:migrate完成。这确保了数据库状态的一致性。

如果您的迁移不再在完整堆栈中运行,则可以使用db:schema:load。这将直接从 schema.rb 加载架构。但请注意,如果create_table使用参数force: trueforce: :cascade,这也可能具有破坏性。

heroku run rake db:schema:load