如何在Heroku上使用db:drop和rake db:create?

Geo*_*off 43 database postgresql rake heroku

可能重复:
如何清空heroku中的数据库

我在Heroku上有一个Postgres数据库.它是免费测试版之一.在本地,在测试时,我经常运行rake db:drop && rake db:create && rake db:migrate作为重置数据库的方法.

但是,当我尝试在Heroku上运行它时,我收到错误:

Couldn't drop mydatabaseid : #<PG::Error: FATAL:  permission denied for database "postgres"
  DETAIL:  User does not have CONNECT privilege.
Run Code Online (Sandbox Code Playgroud)

呃,好的,我怎么能完全重置我的数据库,迁移和一切?

Nei*_*ton 86

pg:reset命令将为您重新创建数据库.用法示例:

$ heroku config | grep POSTGRESQL
HEROKU_POSTGRESQL_RED_URL: postgres://somedatabaseurl
$ heroku pg:reset HEROKU_POSTGRESQL_RED_URL
!    WARNING: Destructive Action
!    This command will affect the app: myappname
!    To proceed, type "myappname" or re-run this command with --confirm
> myappname
Resetting HEROKU_POSTGRESQL_RED_URL (DATABASE_URL)... done
Run Code Online (Sandbox Code Playgroud)

db:reset命令将尝试删除数据库,这不是Heroku的权限允许的.

  • 只是为了澄清任何跳过上述链接的人,你想在命令行运行**`heroku pg:reset`**,而不是`heroku run rake pg:reset`或类似的东西. (63认同)
  • 这对我有用:`heroku config | grep POSTGRESQL` - 获取数据库的名称,例如`HEROKU_POSTGRESQL_BLUE_URL`,然后运行`heroku pg:reset HEROKU_POSTGRESQL_BLUE_URL` (32认同)
  • 只是一个小更新:为了重置`postgres`数据库,你需要输入数据库的`name`. (6认同)
  • 当我使用数据库名称尝试上述选项时,我收到一条错误消息,说"有效选项是:DATABASE_URL".所以我输入了`heroku pg:reset DATABASE_URL`,它运行得很好. (5认同)
  • 在我的大脑某处 - 不知道在哪里. (4认同)
  • 这是Heroku文档:https://devcenter.heroku.com/articles/rake (3认同)
  • Heroku要求你确认.如需重置一行,请尝试使用heroku pg:reset HEROKU_POSTGRESQL_COPPER_URL - 确认<appname> (2认同)
  • 请注意,执行上述操作后,您将不得不执行`heroku run rake db:migrate`. (2认同)