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

Joh*_*ohn 33 rake ruby-on-rails heroku cedar

当我尝试运行时:

heroku run rake db:drop db:create db:migrate
Run Code Online (Sandbox Code Playgroud)

我收到错误:

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">
Run Code Online (Sandbox Code Playgroud)

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

谢谢!

约翰

Fra*_*oto 49

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

  • 现在已经改为`heroku pg:reset DATABASE_URL --confirm nameofapp` - ymmv (18认同)
  • 是的,您需要键入`heroku pg:reset SHARED_DATABASE`然后在提示时输入您的应用名称 (4认同)

sch*_*jos 13

heroku上不允许直接破坏性命令(删除创建).但是如果你没有丢失所有数据,你可以重置数据库pg:reset.

heroku pg:reset DATABASE_URL
Run Code Online (Sandbox Code Playgroud)

应该完成其他所有变更db:migrate.这确保了数据库状态的一致性.


如果您的迁移不再通过完整堆栈运行,则可以使用db:schema:load.这将直接从schema.rb加载架构.但要注意,如果create_table使用参数force: true或者这也可能是破坏性的force: :cascade.

heroku run rake db:schema:load
Run Code Online (Sandbox Code Playgroud)